https://school.programmers.co.kr/learn/courses/30/lessons/12922
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
* 수박수박수박수박수박수? *
길이가 "n"이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요.
예를들어 "n"이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
* 제한사항 *
"n"은 길이 "10,000이하"인 "자연수"입니다.
* 알고리즘 분석과 이해 *
이 알고리즘은 입력으로 주어진 수에 따라서
"수"와 "박"을 번갈아가며 출력하는 패턴을 생성하는 것이 핵심이죠.
예를 들어, "n"이 "4"라면 "수박수박", "n"이 "3"이라면 "수박수"가 되어야 하고
가장 간단한 방법으로 주어진 n에 따라 "수"와 "박"을 번갈아가며
조합한 문자열을 생성하는 것이 되겠습니다.
* 로직구상 *
주어진 n이 짝수인지 홀수인지 판단하기 위해 if-else 문을 사용 할 수 있겠죠?!
if 문을 사용하여 n이 짝수인지 확인하고, else 문을 사용하여 n이 홀수인 경우를 처리할 것입니다.
"수박" 패턴을 n/2번 반복하고, 홀수인 경우에는 한 . 번 . 더
"수"를 추가해야 하니까 반복문을 사용해서 패턴을 생성 하고
패턴을 생성할 때 문자열에 "수"와 "박"을 추가 하는 방식으로
문자열 연산자인 +=를 사용해서 문자열에 다른 문자열을 추가 하면 좋을 것 같습니다.
그리고
짝수와 홀수를 판단하기 위해 산술 연산자 %를 사용해서
n을 2로 나눈 나머지가 0이면 짝수이고,
그렇지 않으면 홀수가되는 방식으로 접근 해보도록 합시다.
* 코드구성 *
func solution(_ n:Int) -> String {
var pattern = ""
먼저 함수를 정의해줍시다.
solution 함수는 입력값 n을 받아서 문자열을 반환해주고
pattern 변수는 문자열을 저장하기 위한 빈 문자열로 초기화 시켜줍시다.
다음으로,
// n이 짝수인 경우
if n % 2 == 0 {
조건문을 정의해 줍시다.
n을 2로 나눈 나머지가 0인 경우, 즉 짝수인 경우를 확인 해주는데,
for _ in 0..<n/2 {
pattern += "수박"
}
짝수인 경우, "수박" 패턴을 n/2번 반복해서 pattern 문자열에 추가해주고,
반복문에서는 _를 사용하여 반복 횟수를 사용하지 않고 반복만 수행하도록 해줍시다.
다음으로,
}
// n이 홀수인 경우
else {
짝수가 아닌 경우, 즉 홀수인 경우를 다루게 됩니다.
for _ in 0..<n/2 {
pattern += "수박"
}
홀수인 경우에도 짝수와 같이
"수박" 패턴을 n/2번 반복하여
pattern 문자열에 추가해줍니다.
pattern += "수"
}
return pattern
}
마지막으로, 홀수인 경우에는 반복 후에 추가로 "수"를 pattern 문자열에 추가해주고
반복문이 완료되면 최종적으로 생성된 패턴이 담긴 pattern 문자열을 반환해줍니다.
주어진 n에 따라 "수박" 패턴을 생성하고 그 결과를 반환하며 끝이 납니다.
전체 코드 구성
func solution(_ n:Int) -> String {
var pattern = ""
// n이 짝수인 경우
if n % 2 == 0 {
for _ in 0..<n/2 {
pattern += "수박"
}
}
// n이 홀수인 경우
else {
for _ in 0..<n/2 {
pattern += "수박"
}
pattern += "수"
}
return pattern
}
'IOS > Swift-Algorithm (Programmers)' 카테고리의 다른 글
[Swift] Programmers - 약수의 개수와 덧셈 (0) | 2024.03.14 |
---|---|
[Swift] Programmers - 내적 (0) | 2024.03.13 |
[Swift] Programmers - 가운데 글자 가져오기 (0) | 2024.03.11 |
[Swift] Programmers - 제일 작은 수 제거하기 (0) | 2024.03.08 |
[Swift] Programmers - 없는 숫자 더하기 (0) | 2024.03.07 |