이상한 문자 만들기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]

2022. 10. 10. 18:41·Algorithm, 코딩테스트
728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12930?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


풀이

def solution(s):
    isEven=True
    arr=[]
    for i in s:
        if i == ' ':
            arr.append(i)
            isEven=True
        elif isEven:
            arr.append(i.upper())
            isEven=False
        else:
            arr.append(i.lower())
            isEven=True
    return "".join(arr)

설명

빈 리스트 arr에 s의 각 문자들을 append하는데, isEven이라는 변수를 두어 s의 문자가 각 단어에서 짝수번째 인덱스를 가지는지 판단하여 문자를 대/소문자로 바꿔서 append한다. 또한 문자가 공백일 경우 isEven을 True로 하여 각 단어의 첫 번째 문자는 대문자로 append될 수 있도록 한다. 마지막에 arr에 있는 문자들을 join하여 반환한다.

 

Tip (아래 "더보기" 클릭)

더보기

for문과 if문을 한 줄로 사용하고 enumerate 함수를 사용하면 다음과 같이도 가능하다.

def solution(s):
    return " ".join(["".join([letter.upper() if i%2==0 else letter.lower() for i,letter in enumerate(word)]) for word in s.split(' ')])

한 줄이어서 코드는 짧지만 가독성은 떨어져서 개인적으로 비추한다.


TIL

  • str.upper() / str.lower(): 문자열의 모든 글자를 대/소문자로 변환한 새 문자열을 반환한다.(원본 문자열은 그대로)
  • 문자열은 immutable하기 때문에 인덱싱을 이용하여 값을 바꿀 수 없다. 따라서 값을 바꾸려면 ① list로 변환하여 인덱싱을 이용해 값을 바꾼 후 다시 join하거나 ②replace()를 이용해야한다.
  • for문과 if문을 한 줄로도 사용할 수 있다.
    예시: li = [i for i in range(10)]   * li = list(range(10)) 과 같다.
  • enumerate(iterable, start=0): iterable 자료형에서 각 원소의 인덱스 번호와 값을 tuple형태로 반환한다. start값을 조정하면 인덱스 번호의 시작 값을 조정할 수 있다.
    주로 반복문에서 아래와 같이 사용한다.
for i, j in enumerate(['apple', 'banana', 'orange']):
	print(i,j)
'''
출력 결과:
0 apple
1 banana
2 orange
'''
728x90
반응형
저작자표시 비영리 (새창열림)

'Algorithm, 코딩테스트' 카테고리의 다른 글

예산-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]  (0) 2022.10.13
3진법 뒤집기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]  (0) 2022.10.12
같은 숫자는 싫어-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]  (0) 2022.10.09
최대공약수와 최소공배수-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]  (0) 2022.10.07
직사각형 별찍기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]  (0) 2022.10.07
'Algorithm, 코딩테스트' 카테고리의 다른 글
  • 예산-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]
  • 3진법 뒤집기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]
  • 같은 숫자는 싫어-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]
  • 최대공약수와 최소공배수-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]
20mini
20mini
개발 공부를 하며 알게 된 내용들을 기록한 블로그입니다. 댓글로 조언, 지적, 충고 등 다양한 의견들 항상 환영합니다!!
    반응형
    250x250
  • 20mini
    해시태그코딩 #coding
    20mini
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Python (1)
      • Algorithm, 코딩테스트 (82)
      • Machine Learning (8)
      • 논문 리뷰 (0)
      • 그 외 공부 관련 (2)
      • 기타 (1)
  • 인기 글

  • 태그

    알고리즘
    완전탐색
    프로그래머스
    Python
    lv.1
    hash
    Machine Learning
    lv.2
    lv.3
    코딩테스트
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
20mini
이상한 문자 만들기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1]
상단으로

티스토리툴바