dmswl

[프로그래머스 LV2] JadenCase 문자열 만들기 본문

코테 공부/알고리즘

[프로그래머스 LV2] JadenCase 문자열 만들기

dmswl. 2023. 4. 12. 18:28

주의사항

제한 조건을 꼼꼼히 보자!!!!!!!!!!!!!

제한 조건에 대한 test case를 미리 추가해놓자!!!!!!!!!!!!!!!!!!!!

 

제한 조건

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.

공백문자가 연속해서 나올 수 있습니다. <- 이 부분이 이 문제의 hidden point임

 

내 풀이는 공백문자가 연속해서 나오는 경우를 고려하지 않음.

 

 

내 풀이

def solution(s):
    res = [str(string[0].upper() + string[1:].lower()) for string in s.split()]
    
    return ' '.join(res)

 

 

test case

s return
"a a a a a a a a a a " "A A A A A A A A A A "
"a   a   " "A   A   "
   

 

풀이 방법

1. 공백을 그대로 가져가야되는데 split()해버리면 공백 3개여도 하나로 인식하고 무시해버림. 

-> 정규식으로 숫자 또는 알파벳인 경우의 인덱스를 저장하고 그 인덱스 자리에 변환한 문자열을 넣어야 하나?

-> 아니면 매 문자열이 끝날때마다 공백 개수를 count해서 붙여야하나 - 이걸로 가자!

 

capitalize() 내장 함수 이용

: 첫글자만 대문자로 나머지는 소문자로 바꿔주는 함수

def solution(s):
	answer = ''
    s = s.split(' ')	# 공백 기준으로 문자열 split
    
    for i in range(len(s)):	# 공백 기준으로 split한 문자열의 개수만큼 for문 돌기
    	s[i] = s[i].capitalize()	# 각 문자열에 capitalize()함수 적용
        
    answer = ' '.join(s)	# 각 문자열을 공백을 기준으로 join
    
    
    return answer

 

Comments