문제
📌 파이썬 으로 풀이
📌 문제 링크 :
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌 문제 설명 :
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
📌 제한 사항
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
📌 입출력 예
풀이
추측)
공백 단위로 배열을 자르고 앞자리를 대문자로 만들어 다시 문자열로 붙여준다.
마지막 인덱스가 아닐 경우에는 공백을 추가하여 붙여준다.
숫자는 소문자나 대문자나 같으니 첫문자가 숫자인 경우를 예외처리할 필요 없다.
아니 잠깐.. 공백문자가 여러개 나올 수 있다라...
소스코드)
* 1차) 실패 : 44.4 (많은 런타임 에러)
def solution(s):
answer = ''
string_arr = [one.lower() for one in s.split(" ")]
for i in range(0,len(string_arr)) :
first_str = string_arr[i][0]
answer += string_arr[i].replace(first_str, first_str.upper(), 1)
if i != len(string_arr)-1 :
answer += " "
return answer
* 2차) 성공
def solution(s):
answer = ''
flag = False
for one in s :
if one == ' ' :
flag = False
answer += one
else :
if one != ' ' and flag == False :
flag = True
answer += one.upper()
else :
answer += one.lower()
return answer
리뷰)
1차 피드백)
1차에 일단 공백문자 여러개일 경우를 생각안하고 해본 경우는 44.4점.. 게다가 런타임 에러 흠
공백을 기준으로 자르기 보다는 문자 그자체를 판단하는 방식으로 가는게 맞을 거 같다.
방식을 완전히 바꿔 문자열 하나하나 판단하는 방법으로 해보자
2차에서는 flag를 하나 준다
공백을 만나면 false로 전환해서 그다음 만나는 문자가 첫문자다 라는 걸 알리는 방식
문자를 만나면 True로 전환해서 이미 첫문자를 만났다라는 것을 알린다
그래서 각 문자 하나하나 for문을 돌려서 공백과 문자열을 판별해가며 flag를 전환하고
flag가 False라 아직 첫문자를 안 만난상태에 그리고 글자가 공백이 아닌 경우가 바로 첫글자라 판단하여 해당 문자를 대문자로 전환하고 나머지는 모두 소문자화 시킨다.
'Coding Test > Algorithm' 카테고리의 다른 글
Programmers] 프린터 (0) | 2023.04.11 |
---|---|
Programmers] n^2 배열 자르기 (0) | 2023.04.03 |
Programmers] 공원 산책 (0) | 2023.04.03 |
Programmers] 덧칠하기 (0) | 2023.03.28 |
Programmers] 귤 고르기 (0) | 2023.03.28 |