국문과 유목민

21. 이상한 문자 만들기 본문

알고리즘_코딩테스트/프로그래머스_Level1

21. 이상한 문자 만들기

논곰 2020. 9. 11. 23:06

0. 문제

링크) https://programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr


1. 알고리즘 계획

  1. 단어를 리스트로 쪼갠다. split()이용
  2. 모든 단어를 대문자화 한다.
  3. 두번째에 해당하는 문자만 소문자로 만든다.
  4. 쪼갰던 문자를 다시 합쳐준다. join()이용


2. 나의 코드

def solution(s):
    answer = []
    ls = s.split(" ")
    for v in ls:
        word_ls = list(v.upper())
        for j in range(len(word_ls)):
            if j % 2 == 1:
                word_ls[j] = word_ls[j].lower()
        answer.append("".join(word_ls))
    return " ".join(answer)##sample


3. 다른 사람의 코드

def solution2(s):
    return ' '.join([''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split()])

- 리스트 컴프리핸션에 이중 for문 사용

def solution3(s):
    return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))

- 위와 방법은 유사하나 map함수를 이용


4. 정리 및 리뷰

-  알고리즘은 쉽다고 생각했는데 코드를 줄이는 것을 너무 신경쓰지 못했다.  

- 쪼개고 합치는 원리는 똑같다. 이를 얼마나 압축했는지에 차이


코드 만족도: ★★★


'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글

23. 자연수 뒤집어 배열로 만들기  (0) 2020.09.11
22. 자릿수 더하기  (0) 2020.09.11
20. 약수의 합  (0) 2020.09.10
19. 시저암호  (0) 2020.09.10
18. 문자열을 정수로 바꾸기  (0) 2020.09.10
Comments