아요 개발 일기
[프로그래머스] Level 1. 수박수박수박수박수박수? 본문
안녕하세요!!
오늘은 수박수박수박수박수박수? 문제를 데려왔습니다!
이름이 재밌죠?ㅋㅋㅋㅋㅋㅋ 문제 보러 갑시댱
문제
내 풀이
저는 for문이나 if문을 참 좋아하는 것 같아요..ㅎㅎ..... 아직 멀었다는 뜻이겠죠?
쉬운 코드지만, 간단하게 설명하자면 아래와 같습니다 :D
for i in 1...n : i가 1부터 n번째까지 내부 코드를 돌려줘!
if i % 2 == 1 : 만약 i 를 2로 나누었을때 나머지가 1이면 "수"를 result에 추가해주고
else: 아니면 "박"을 추가해줘!
좋다고 생각한 풀이
이것 보세요~ 배운거 잘 활용하시는 분들을~~ 나 자신 본받아ㅠ
func solution(_ n:Int) -> String {
return "\(String(repeating: "수박", count: n / 2))\(n % 2 == 0 ? "" : "수")"
}
(repeating:, count:)는 배열 공부할때 크기가 정해진 배열을 만들기 위해서 사용했던 명령어?죠?????
각자 뜻하는 것을 적자면 아래와 같습니다!
repeating : 반복하고 싶은 문자 혹은 숫자 등등을
count : repeating에 적어 둔 것을 얼마나 반복할 것인가
위 코드는 아래 뜻과 같은 것 같아요!
"수박"을 n / 2반복 해 주고,
n % 2 == 0이면 " " 값(빈 값)을 주고 아니면 "수"를 출력해줘
func solution(_ n:Int) -> String {
return (0..<n).map{($0%2==0 ? "수":"박")}.reduce("", +)
}
이건 map 고차 함수를 사용했군요!! 이렇게 푸신 분 멋져요..
map은 데이터를 변형하고자 할 때 사용하고 reduce는 값을 합할때 사용합니다! (reduce는 저번 문제에서도 봤던 친구죠?ㅎ)
(0..<n) : n보다 작을때까지
map{
($0 % 2 == 0 ? "수" : "박")} : n 값을 2로 나누었을 때 나머지가 0이면 "수" 아니면 "박"
.reduce("",+) : 초기값 "" 앞 연산을 ("수","박"부분) + 합해줘
식을 뜯어보니 위와같이 해석이 되네오?!
아주아주 간결하고 깔끔한 식이에용,,,,
정말 .. 문제를 풀때마다 아직 멀었다는 생각이 드네요ㅠ.ㅜ
혹시 틀린 부분이나 더 좋은 풀이 있으면 댓글 달아주세요 :D
'Algorithms > 문제 풀이' 카테고리의 다른 글
[프로그래머스]Level 1. 두 정수 사이의 합 (0) | 2023.01.16 |
---|---|
[프로그래머스] Level 1. 나머지가 1이 되는 수 찾기 (0) | 2023.01.16 |
[프로그래머스] Level 1. 평균 구하기 (0) | 2023.01.16 |
[프로그래머스] Level1. 짝수와 홀수 (0) | 2023.01.16 |
[구름LEVEL] Level1. 16진수 Feat. 진수 변환 (0) | 2023.01.16 |