아요 개발 일기

[프로그래머스] Level 1. 수박수박수박수박수박수? 본문

Algorithms/문제 풀이

[프로그래머스] Level 1. 수박수박수박수박수박수?

김망복 2023. 1. 16. 10:37
반응형

안녕하세요!!

오늘은 수박수박수박수박수박수? 문제를 데려왔습니다!

이름이 재밌죠?ㅋㅋㅋㅋㅋㅋ 문제 보러 갑시댱


문제

 

내 풀이

저는 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

반응형