Posts 알파벳 바꾸기 [CosProLv2]
Post
Cancel

알파벳 바꾸기 [CosProLv2]

URL https://programmers.co.kr/learn/courses/33/lessons/1860

문제 설명

  • 문자열이 주어졌을 때, 문자열에서 ‘a’는 ‘z’로, ‘z’는 ‘a’로 바꾸려고 합니다. 예를 들어 주어진 문자열이 “abz”라면 “zba”라는 문자열을 만들면 됩니다.
  • 문자열 s가 매개변수로 주어졌을 때, 문자열에서 ‘a’는 ‘z’로, ‘z’는 ‘a’로 바꾸어 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

매개변수 설명

  • 문자열 s가 solution 함수의 매개변수로 주어집니다.
  • 문자열 s는 알파벳 소문자로만 이루어져 있으며 길이는 1 이상 100 이하입니다.

return 값 설명

  • solution 함수는 문자열에서 ‘a’는 ‘z’로, ‘z’는 ‘a’로 바꾼 후 return 합니다.

수정할 코드

1
2
3
4
5
6
7
8
9
def solution(s):
    s_lst = list(s)
    n = len(s)
    for i in range(n):
        if s_lst[i] == 'a':
            s_lst[i] = 'z'
        if s_lst[i] == 'z':
            s_lst[i] =  'a'
    return "".join(s_lst)

문제 풀이

  • 주어진 코드에서 1줄만 수정하여 정상작동하는 코드를 만들어내는 문제이다.
  • 수정할 코드에서 if문이 2개가 되어 a가 z로 바뀌고 다시 z가 a로 바뀌게 되어있다. if문이 중복됨
  • 따라서 2번째 if를 elif로 바꾸어서 if문 중복을 피하거나, 첫번째 if문 뒤에 continue를 넣어 처음 if문이 되면 다시 for문이 도는것으로 해야한다.
  • 다만 continue 다만 프로그래머스에서 줄 추가가 안되어 해당 솔루션은 사용 못하긴 함.
1
2
3
4
5
6
7
8
9
10
# answer 1
def solution(s):
    s_lst = list(s)
    n = len(s)
    for i in range(n):
        if s_lst[i] == 'a':
            s_lst[i] = 'z'
        elif s_lst[i] == 'z': # 해당 부분 수정
            s_lst[i] =  'a'
    return "".join(s_lst)
1
2
s = "abz"
solution(s)
1
'zba'
1
2
3
4
5
6
7
8
9
10
11
# answer 2, 다만 프로그래머스에서 줄 추가가 안되어 해당 솔루션은 사용 못하긴 함.
def solution(s):
    s_lst = list(s)
    n = len(s)
    for i in range(n):
        if s_lst[i] == 'a':
            s_lst[i] = 'z'
            continue      # 해당 부분 수정
        if s_lst[i] == 'z':
            s_lst[i] =  'a'
    return "".join(s_lst)
1
2
s = "abz"
solution(s)
1
'zba'
This post is licensed under CC BY 4.0 by the author.