문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를 들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
- n은 길이 10,000이하인 자연수입니다.
입출력 예
n | return |
3 | "수박수" |
4 | "수박수박" |
✅SOL_1
1
2
3
4
5
6
7
8
|
def solution(n):
a = ''
for i in range(1, n+1):
if i % 2 == 1:
a = a + '수'
elif i % 2 == 0:
a = a + '박'
return a
|
cs |
내가 풀었지만 별로 좋은 코드는 아니다.. SOL_2와 비교하면 쓸모없는 구문들이 많이 쓰였다. 그래도 알아보자면, 값을 저장할 문자열 변수 a를 선언한다. for문을 통해 1부터 입력된 수 n까지 '수' 또는 '박'을 저장하기 위해 < range(1, n+1) >이라 작성한다. for문 안에서 if문을 통해 반복문 변수 i가 홀수인지 짝수인지 검사한다. 이때도 i는 홀수가 아니면 짝수일 경우 밖에 없으니 if-else로 쓰면 더 간단한데, 굳이 if-elif로 두 가지 조건을 검사했다. (과거의 나..) 아무튼 그렇게 검사를 통해 홀수번째이면 '수'를 짝수번째이면 '박'을 문자열 a에 저장한다. 저 구문도 < a += '수' >라고 쓰면 불필요한 글자를 줄일 수 있다. 이렇게 1부터 n까지 문자열 a를 채우고 return 한다.
✅SOL_2
1
2
3
4
5
|
def solution(n):
answer = '수박' * (n//2)
if n % 2 == 1:
answer += '수'
return answer
|
cs |
SOL_1보다 효율적인 코드이다. 먼저 문제를 조금만 더 생각해보면 1부터 n까지 값을 하나하나 검사하며 '수'와 '박'을 각각 문자열에 입력하지 않아도 된다. 즉, for문을 작성할 필요가 없다. n이 어떤 값이던 '수박'은 n을 2로 나눈 몫인 < n//2 >번 들어간다. 그리고 n의 홀짝여부에 따라 홀수이면 맨 뒤에 '수'만 추가해주면 된다. 만약 n이 4이면 '수박'을 묶어서 생각하면 2번 들어간다 "수박수박". n이 7이면 '수박'은 3번 들어가고 맨 뒤에 '수'가 추가된다 "수박수박수박수'. 이렇게 생각하니 간단한 if문만 사용하여 코드를 작성할 수 있다.
'Python 공부기록' 카테고리의 다른 글
Python _ 정수 내림차순으로 배치하기 (1) | 2021.03.11 |
---|---|
Python _ 최대공약수와 최소공배수 (1) | 2021.03.10 |
Python _ 정수 제곱근 판별 (0) | 2021.03.08 |
Python _ 제일 작은 수 제거하기 (1) | 2021.03.05 |
Python _ 짝수와 홀수 (1) | 2021.03.04 |