문제
https://school.programmers.co.kr/learn/courses/30/lessons/12951
풀이
해당 문제의 제한 조건은 다음과 같다.
- s는 길이가 1 이상 200 이하인 문자열이다.
- s는 알파뱃과 숫자, 공백문자로 이루어져 있다.
- 숫자는 단어의 첫 문자로만 나온다.
- 숫자로만 이루어진 단어는 없다.
- 공백문자가 연속해서 나올 수 있다.
일단 주어진 문장 s을 공백 기준으로 나눈 뒤, 각 단어를 순회하면서 해당 조건을 맞추는 형식으로 코드를 작성하였다. 해당 문자가 숫자인지, 알파벳인지 구별하기 위해서 string모듈을 가져와 판단하는 식으로 코드를 작성하였다.
🖥️ main.py
import string
def solution(s) -> str:
answer: list[str] = []
for i in s.split(" "):
answer_str = ""
for index, j in enumerate(i):
if index == 0 and j in string.ascii_letters:
answer_str += j.upper()
elif j in string.ascii_letters:
answer_str += j.lower()
else:
answer_str += j
answer.append(answer_str)
return " ".join(answer)
해당 문제를 풀면서 혹시 타입에 따라서 불리언 값을 나타내주는 함수가 없나 살펴봤는데, 파이썬에서는 어떤 값의 타입에 따라 불리언형태로 반환해 주는 isinstance()가 있었다. 사용법은 아래와 같다.
🖥️ main.py
name: str = "정해원"
print(isinstance(name, str)) // True
print(isinstance(name, int)) // False
나중에 해당 값이 문자인지 숫자인지 판별하기 위해서 isinstance()을 이용하여 로직을 처리하는 코드도 작성해봐야겠다.
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 LV0 접미사인지 확인하기 (2) | 2023.07.19 |
---|---|
프로그래머스 LV0 OX퀴즈 (0) | 2023.07.19 |
프로그래머스 LV2 튜플 (0) | 2023.07.17 |
프로그래머스 LV2 영어 끝말잇기 (0) | 2023.07.17 |
프로그래머스 LV2 최솟값 만들기 (0) | 2023.07.17 |