๐ฉ๏ธ ๋จน๊ตฌ๋ฆ
iOS: ์ปค์คํ
์
์ ์ฉํ๊ธฐ
iOS: ์ปค์คํ ์ ์ ์ฉํ๊ธฐ
2021.04.16์คํ ๋ฆฌ๋ณด๋๋ก ์์
ํ๋ ๊ฒฝ์ฐ์๋ ๋ฑ๋กํ ํ์๊ฐ ์๋๋ฐ, ์ฝ๋๋ก ์์
ํ๋ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๋ฑ๋กํด์ค์ผ ํ๋ค. ์ฝ๋๋ก ๋ง๋ ๊ฒฝ์ฐ collectionView.register(TweetCollectionViewCell.self, forCellWithReuseIdentifier: TweetCollectionViewCell.identifier) xib๋ก ๋ง๋ ๊ฒฝ์ฐ let nib = UINib(nibName: "TweetCollectionViewCell", bundle: nil) collectionView.register(nib, forCellWithReuseIdentifier: TweetCollectionViewCell.identifier) ๋ทฐ ์ปจํธ๋กค๋ฌ ํ๋์์ ์ฌ๋ฌ ๊ฐ์ ์
์ ๋ค๋ฃฌ๋ค๋ฉด, ์ฌ๋ฌ ๊ฐ ๋ฑ๋กํด์ค์ผ ํ๋ค. U..
iOS: ์ปฌ๋ ์
๋ทฐ ์ต์๋จ(ํน์ ์์น)์ผ๋ก ์ด๋ํ๊ธฐ
iOS: ์ปฌ๋ ์ ๋ทฐ ์ต์๋จ(ํน์ ์์น)์ผ๋ก ์ด๋ํ๊ธฐ
2021.04.16@objc func scrollToTop(_ sender: UIButton) { collectionView.scrollToItem(at: IndexPath(row: 0, section: 0), at: .top, animated: true) } ๋ค๋น๊ฒ์ด์
ํ์ดํ์ ํฐ์นํ๋ฉด ์ปฌ๋ ์
๋ทฐ ์ต์๋จ์ผ๋ก ์ด๋ํ๊ณ ์ถ์๋ค. ์ด ๋ฐ์๋ scrollToItem(at:at:animated:)์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ค์ด๊ฐ๋ IndexPath(row:section:)์ ์กฐ์ ํ๋ฉด ์ํ๋ ์์น๋ก ์ด๋ํ ์ ์๋ค. (์: ํน์ ์น์
์ผ๋ก ์ด๋, ํน์ ์์น๋ก ์ด๋)
iOS: UIView.clipToBounds์ layer.masksToBounds
iOS: UIView.clipToBounds์ layer.masksToBounds
2021.04.16UIView.clipToBounds ์ด ๊ฐ์ true๋ก ์ค์ ํ๋ฉด ์๋ธ ๋ทฐ๊ฐ ์์ ์์ ๊ฒฝ๊ณ์ ์๋ฆฐ๋ค. false๋ก ์ค์ ํ๋ฉด ํ๋ ์์ด ์์ ๊ธฐ์ ๊ฐ์์ ๊ฒฝ๊ณ๋ฅผ ๋์ด ํ์ฅ๋๋ ์๋ธ ๋ทฐ๋ ์๋ฆฌ์ง ์๋๋ค. ๊ธฐ๋ณธ๊ฐ์ false์ด๋ค. Setting this value to true causes subviews to be clipped to the bounds of the receiver. If set to false, subviews whose frames extend beyond the visible bounds of the receiver are not clipped. The default value is false. layer.masksToBounds ์ด ์์ฑ์ ๊ฐ์ด true์ด๋ฉด Core Animation์ ๋ ์ด..
iOS: ์ฝ๋๋ก ๋ฒํผ์ ์ด๋ฏธ์ง์ ํ
์คํธ ๋ฃ๊ธฐ
iOS: ์ฝ๋๋ก ๋ฒํผ์ ์ด๋ฏธ์ง์ ํ ์คํธ ๋ฃ๊ธฐ
2021.04.16button.setImage(UIImage(systemName: "bubble.left"), for: .normal) ์ด๋ฏธ์ง๋ฅผ ํ
์คํธ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด semanticContentAttribute ์์ฑ์ .forceRightToLeft๋ก ๋ณ๊ฒฝํ๋ค. button.semanticContentAttribute = .forceLeftToRight ์ ์ฒด ์ฝ๋ let button = UIButton() button.translatesAutoresizingMaskIntoConstraints = false button.titleLabel?.adjustsFontForContentSizeCategory = true button.setImage(UIImage(systemName: "bubble.left"), for: ..
iOS: ์คํ ๋ ์ด์์ ๊ธฐ๋ฐ ๋ทฐ์ cornerRadius ์ ์ฉํ๊ธฐ
iOS: ์คํ ๋ ์ด์์ ๊ธฐ๋ฐ ๋ทฐ์ cornerRadius ์ ์ฉํ๊ธฐ
2021.04.16private lazy var profileImageView: UIImageView = { let imageView = UIImageView() imageView.translatesAutoresizingMaskIntoConstraints = false imageView.contentMode = .scaleAspectFill imageView.layer.cornerRadius = imageView.frame.size.height * 0.5 return imageView }() ์ด๋ฏธ์ง ๋ทฐ๋ฅผ ์ด๊ธฐํํ ๋ cornerRadius ๊ฐ์ imageView.frame.size.height / 2๋ฅผ ํ๋ฉด ์ ์ฉ์ด ์๋๋ค. ์ด๊ฒ ์ ์๋๋์ง ๋ชฐ๋ผ์ ๋ค๋ฅธ ์ฝ๋์์๋ ์์๋ก ์์๋ก ์ ์ฉํ์๋ค. ๋๋ ์ด๋ฏธ์ง ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ์คํ ..
ํ๋ ธ์ต๋๋ค! ๋ชจ์์ง - 2021๋
04์ 14์ผ(์)
ํ๋ ธ์ต๋๋ค! ๋ชจ์์ง - 2021๋ 04์ 14์ผ(์)
2021.04.15๋๋ฆ๋๋ก ํ์๋๋ฐ, ํ๋ ธ๊ฑฐ๋ ์๊ฐ ์ด๊ณผ์ธ ์ฝ๋ ๋ชจ์์ง BOJ: #2870 - ์ํ์์ ์
๋ ฅ์ด ๋ค์ด์ค๋ ๋ฌธ์์ด์์ ์ซ์๋ ๋ฐฐ์ด์ ๋ฐ๋ก ์ ์ฅํด์ ์ฒ๋ฆฌํ๋ค. ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ์๋ allSatisfy()๋ฅผ ์ด์ฉํด์ ์ฒ๋ฆฌํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ 0์ ์ ๊ท์์ผ๋ก ์ฒ๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ์ swift string number sort๋ก ๊ตฌ๊ธ๋งํด์ ๋์จ ๊ฑธ ์ฌ์ฉํ๋ค. ๊ทผ๋ฐ ํ๋ ธ์โฆ ์ ํ๋ ธ๋์ง ๋ชจ๋ฅด๊ฒ ๋น ๋ฌธ์ https://www.acmicpc.net/problem/2870 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation let n = Int(readLine()!)! var nums = [String]() for _ in 0..
BOJ: #10709 - ๊ธฐ์์บ์คํฐ
BOJ: #10709 - ๊ธฐ์์บ์คํฐ
2021.04.14๋ฌธ์์ด ์ฒ๋ฆฌํ๋ ๋ฌธ์ . ๊ตฌ๋ฆ์ด ์๋ ์๋ฆฌ๋, ์ด๋ฏธ ์ง๋๊ฐ ์๋ฆฌ๋ ์ฒ๋ฆฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ฆ์ด ์๋ ์๋ฆฌ๋ฅผ ๋ชจ๋ "-1"๋ก ์ด๊ธฐํํ๊ณ ํ๋ฒ๋ ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ๋ง ์๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/10709 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let size = readLine()!.split(separator: " ").map { Int(String($0))! } var board = [[String]]() for _ in 0..
BOJ: #4659 - ๋น๋ฐ๋ฒํธ ๋ฐ์ํ๊ธฐ
BOJ: #4659 - ๋น๋ฐ๋ฒํธ ๋ฐ์ํ๊ธฐ
2021.04.13์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ๊ตฌํํ๋ฉด ๋๋ ๋ฌธ์ ๋ฌธ์ https://www.acmicpc.net/problem/4659 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let vowel = Array("aeiou") while let input = readLine() { if input == "end" { break } var isAcceptable = true // ๋ชจ์ ํ๋๋ฅผ ๋ฐ๋์ ํฌํจ if !input.contains(where: ) { isAcceptable = false } // ๋ชจ์์ด 3๊ฐ ํน์ ์์์ด 3๊ฐ ์ฐ์์ผ๋ก ์ค๋ฉด ์ ๋๋ค. var arr = Array(input) var isVowel = vowel.contains(input.first!) var prevChar = input.first! var count = 0..
BOJ: #2910 - ๋น๋ ์ ๋ ฌ
BOJ: #2910 - ๋น๋ ์ ๋ ฌ
2021.04.13๋์
๋๋ฆฌ์ sorted๋ฅผ ์ด์ฉํด์ ํ์๋๋ฐ, ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง ๊ทธ๋ค์ง ๊นจ๋ํ์ง ์๋ค. ๊ทธ๋ฅ ์ด๋ฐ์์ผ๋ก ํ ์ ์๋ค~ ์ ๋๋ก๋ง ์ฐธ๊ณ ๋ฐ๋. ๋ฌธ์ https://www.acmicpc.net/problem/2910 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let n = readLine()!.split(separator: " ").map { Int(String($0))! } var message = readLine()!.split(separator: " ").map { Int(String($0))! } var dict = [Int: Int]() for m in message { dict[m, default: 0] += 1 } var answer = [Int]() for (key, value) in dict.sorted(..
BOJ: #2828 - ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์
BOJ: #2828 - ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์
2021.04.13๋ฐ๊ตฌ๋์ ํฌ๊ธฐ๋ฅผ ๋ฐ๊ตฌ๋์ ๊ฐ์๋ก ์ดํดํด์ ์์ฒญ ํด๋ฉจ๋ค. ํ๊ตญ์ด๋ถํฐ ๋ค์ ๊ณต๋ถํด์ผ๊ฒ ๋ค^_ใ
๋ฌธ์ https://www.acmicpc.net/problem/2828 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let n = readLine()!.split(separator: " ").map { Int(String($0))! } var start = 0 var end = n[1] - 1 let j = Int(readLine()!)! var queue = [Int]() for _ in 0..
BOJ: #2583 - ์์ญ ๊ตฌํ๊ธฐ
BOJ: #2583 - ์์ญ ๊ตฌํ๊ธฐ
2021.04.13์ฃผ์ด์ง๋ ์ผ์ชฝ ์๋ ๊ผญ์ง์ , ์ค๋ฅธ์ชฝ ์ ๊ผญ์ง์ ์ ๊ฐ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์นํํ๋ ๊ณผ์ ์ ๋ฐ๋ก ์๊ฐํ๊ธฐ๊ฐ ์ด๋ ค์์ ์์ผ๋ก ์ด์ฌํ ๊ณ์ฐํ๋ฉด์ ํ์๋ค. ์ด ๊ณผ์ ์ดํ์๋ ํ์ ๋ฌธ์ ์ ๋์ผํ๊ฒ ํ๋ฉด ๋๋ค. ๊ฐ ์์ญ์ ๋์ด๋ visited์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ฉด ๋๋๋ฐ, ์ด ๋ ์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ค๋ณต๊ฐ์ด ๋ค์ด๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ง์ง ์์ visited๋ฅผ Set์ผ๋ก ์ ์ธํ์ฌ ์ค๋ณต๊ฐ ์ฒ๋ฆฌ๋ฅผ ํด์คฌ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/2583 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let n = readLine()!.split(separator: " ").map { Int(String($0))! } var board = Array(repeating: Array(repeating: 0, count: n[1]), c..
BOJ: #2468 - ์์ ์์ญ
BOJ: #2468 - ์์ ์์ญ
2021.04.13๋ค์ด์ฌ ์ ์๋ ๋์ด๋ 1~100 ์ฌ์ด์ด๊ธฐ ๋๋ฌธ์, ์ฅ๋ง์ฒ ์ ๋ฌผ์ด ์์ผ ์ ์๋ ๋์ด๋ 1~100 ์ฌ์ด๋ค. ๊ทธ๋์ ๋ฐ๋ณตํ๋ฉด์ ์์ ์์ญ์ ๊ฐ์๋ฅผ ์ฒดํฌํด์ฃผ๋ฉด ๋๋๋ฐ, ์ด ๋ ์๋ฌด ์ง์ญ๋ ์ ๊ธฐ์ง ์์ ์ ์์ด์ ๋ฐ๋ณต๋ฌธ์ 0๋ถํฐ ์์ํ๊ฒ ํด ์คฌ๋ค. ์ด ์์ด๋์ด์ ๋ํ ๋ถ๋ถ์ ์ด ๊ธ์ ๋๊ธ์ ์ฐธ๊ณ ํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/2468 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let dx = [1, 0, -1, 0] let dy = [0, 1, 0, -1] let n = Int(readLine()!)! var board = [[Int]]() for _ in 0..