
문제
프로그래머스 Level 2

나의 풀이
문자열 슬라이싱으로 접근
(1) 단어의 나열인 문자열 s를 공백기준으로 분리(s.split(" "))해서 리스트(word)에 저장
(2) for문을 통해 각 요소에 접근하며 첫번째 글자만 대문자로 변환해주는 capitalize 함수 적용 또는! 문자열 슬라이싱으로 char[0].upper() + char[1:].lower()도 가능
(3) 새로운 리스트 sentence에 저장하고, 한 문장으로 출력하기 위해 공백을 기준으로 요소들을 합치는 join 사용
def solution(s):
words = s.split(" ") # (1) 단어의 나열인 문자열 s를 공백기준으로 분리
sentence = []
for char in words:
if char != '': # (2) 공백이 아닐 경우, capitalize 함수 사용 > 첫번째 글자를 대문자로 + 나머지를 소문자로 변환해서 새로운 리스트에 저장
sentence.append(char.capitalize())
else : # (3) 공백일 경우, 패~스
sentence.append('')
return " ".join(sentence) # (4) 새로 저장한 리스트를 공백으로 분리해서 join 하나의 문자열로 출력
시행착오
split()과 split(" ")의 차이
split 함수는 문자열에 사용하는 함수로 특정한 구분자로 문자열을 나누어 준다. split의 파라미터는 다음과 같다.
다양한 형식으로 사용가능하며, 파라미터명을 반드시 기재할 필요가 없다. 문자면 구분자로, 숫자면 분할횟수로 인식한다.
문자열.split()
문자열.split('구분자')
문자열.split('구분자', 분할횟수)
문자열.split(sep='구분자', maxsplit=분할횟수)
출처: https://blockdmask.tistory.com/469
위 문제에서 문자열 s를 인자로 받을 때, 공백을 기준으로 나누기 위해 s.split()을 사용하면 공백은 걷어내고 문자열만 저장된다. 반면에 split(" ") 구분자로 공백을 넣어줄 경우 공백을 '기준'으로 분할해서 반환한다. 아래 예제를 보자.
>>> str1 = " hellO sTupid 3peoPle UNKNOWN Unknown".split()
['hellO', 'sTupid', '3peoPle', 'UNKNOWN', 'Unknown']
>>> str2 = " hellO sTupid 3peoPle UNKNOWN Unknown".split(" ")
['', '', '', 'hellO', '', '', '', 'sTupid', '3peoPle', '', 'UNKNOWN', '', '', '', 'Unknown']
구분자를 넣지 않고 split()만 적용할 경우 str1의 출력 결과와 같이 단어만 남는다.
그런데 JadenCase 문제에서는 문자열 s를 받아서 문자의 첫글자만 대문자로 바꾸고 값 그대로 반환해야 한다.
split()으로 인해 공백이 사라지게 되면 원래의 값 s 형태가 무너진다. 그래서 테스트케이스를 통과할 수 없다.
오늘의 노트
도대체가 뭐가 틀린건지 테스트 케이스를 왜이렇게 적게 적어놨는지 툴툴댔지만.. 디테일을 놓친거였다.
의도된 것인지는 모르겠지만 편리한 함수도 사용법을 정확하게 알고있지 않으면 안되겠다.

'TIL' 카테고리의 다른 글
99클럽 코테 스터디 3일차 TIL + 글자 수 세기 (8) | 2024.07.25 |
---|---|
99클럽 코테 스터디 2일차 TIL + 배열의 평균 (2) | 2024.07.23 |
99클럽 코테 스터디 1일차 TIL + 숫자 거꾸로(역순) 출력 (3) | 2024.07.22 |

문제
프로그래머스 Level 2

나의 풀이
문자열 슬라이싱으로 접근
(1) 단어의 나열인 문자열 s를 공백기준으로 분리(s.split(" "))해서 리스트(word)에 저장
(2) for문을 통해 각 요소에 접근하며 첫번째 글자만 대문자로 변환해주는 capitalize 함수 적용 또는! 문자열 슬라이싱으로 char[0].upper() + char[1:].lower()도 가능
(3) 새로운 리스트 sentence에 저장하고, 한 문장으로 출력하기 위해 공백을 기준으로 요소들을 합치는 join 사용
def solution(s):
words = s.split(" ") # (1) 단어의 나열인 문자열 s를 공백기준으로 분리
sentence = []
for char in words:
if char != '': # (2) 공백이 아닐 경우, capitalize 함수 사용 > 첫번째 글자를 대문자로 + 나머지를 소문자로 변환해서 새로운 리스트에 저장
sentence.append(char.capitalize())
else : # (3) 공백일 경우, 패~스
sentence.append('')
return " ".join(sentence) # (4) 새로 저장한 리스트를 공백으로 분리해서 join 하나의 문자열로 출력
시행착오
split()과 split(" ")의 차이
split 함수는 문자열에 사용하는 함수로 특정한 구분자로 문자열을 나누어 준다. split의 파라미터는 다음과 같다.
다양한 형식으로 사용가능하며, 파라미터명을 반드시 기재할 필요가 없다. 문자면 구분자로, 숫자면 분할횟수로 인식한다.
문자열.split()
문자열.split('구분자')
문자열.split('구분자', 분할횟수)
문자열.split(sep='구분자', maxsplit=분할횟수)
출처: https://blockdmask.tistory.com/469
위 문제에서 문자열 s를 인자로 받을 때, 공백을 기준으로 나누기 위해 s.split()을 사용하면 공백은 걷어내고 문자열만 저장된다. 반면에 split(" ") 구분자로 공백을 넣어줄 경우 공백을 '기준'으로 분할해서 반환한다. 아래 예제를 보자.
>>> str1 = " hellO sTupid 3peoPle UNKNOWN Unknown".split()
['hellO', 'sTupid', '3peoPle', 'UNKNOWN', 'Unknown']
>>> str2 = " hellO sTupid 3peoPle UNKNOWN Unknown".split(" ")
['', '', '', 'hellO', '', '', '', 'sTupid', '3peoPle', '', 'UNKNOWN', '', '', '', 'Unknown']
구분자를 넣지 않고 split()만 적용할 경우 str1의 출력 결과와 같이 단어만 남는다.
그런데 JadenCase 문제에서는 문자열 s를 받아서 문자의 첫글자만 대문자로 바꾸고 값 그대로 반환해야 한다.
split()으로 인해 공백이 사라지게 되면 원래의 값 s 형태가 무너진다. 그래서 테스트케이스를 통과할 수 없다.
오늘의 노트
도대체가 뭐가 틀린건지 테스트 케이스를 왜이렇게 적게 적어놨는지 툴툴댔지만.. 디테일을 놓친거였다.
의도된 것인지는 모르겠지만 편리한 함수도 사용법을 정확하게 알고있지 않으면 안되겠다.

'TIL' 카테고리의 다른 글
99클럽 코테 스터디 3일차 TIL + 글자 수 세기 (8) | 2024.07.25 |
---|---|
99클럽 코테 스터디 2일차 TIL + 배열의 평균 (2) | 2024.07.23 |
99클럽 코테 스터디 1일차 TIL + 숫자 거꾸로(역순) 출력 (3) | 2024.07.22 |