코딩 테스트/Level 2
30. JadenCase 문자열 만들기
컴닥
2020. 8. 14. 10:17
반응형
https://programmers.co.kr/learn/courses/30/lessons/12951
JadenCase 문자열 만들기
연습문제
3010명 완료
문자열을 다루는 함수들을 몰라도..
어렵지 않게 풀수 있지만..
알면 더 편하다.
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
파이썬
def solution(s):
words = s.split(' ')
for i, word in enumerate(words):
words[i] = word.capitalize()
return ' '.join(words)
테스트 1 〉 통과 (0.04ms, 10.7MB)
테스트 2 〉 통과 (0.04ms, 10.7MB)
테스트 3 〉 통과 (0.04ms, 10.7MB)
테스트 4 〉 통과 (0.04ms, 10.7MB)
테스트 5 〉 통과 (0.05ms, 10.5MB)
테스트 6 〉 통과 (0.04ms, 10.6MB)
테스트 7 〉 통과 (0.06ms, 10.7MB)
테스트 8 〉 통과 (0.05ms, 10.7MB)
테스트 9 〉 통과 (0.04ms, 10.7MB)
테스트 10 〉 통과 (0.04ms, 10.7MB)
테스트 11 〉 통과 (0.04ms, 10.6MB)
테스트 12 〉 통과 (0.04ms, 10.7MB)
테스트 13 〉 통과 (0.04ms, 10.6MB)
테스트 14 〉 통과 (0.05ms, 10.7MB)
테스트 15 〉 통과 (0.05ms, 10.7MB)
테스트 16 〉 통과 (0.04ms, 10.7MB)
def solution(s):
return ' '.join(map(lambda x: x.capitalize(), s.split(' ')))
테스트 1 〉 통과 (0.05ms, 10.7MB)
테스트 2 〉 통과 (0.07ms, 10.7MB)
테스트 3 〉 통과 (0.05ms, 10.7MB)
테스트 4 〉 통과 (0.05ms, 10.8MB)
테스트 5 〉 통과 (0.05ms, 10.6MB)
테스트 6 〉 통과 (0.05ms, 10.6MB)
테스트 7 〉 통과 (0.05ms, 10.7MB)
테스트 8 〉 통과 (0.05ms, 10.7MB)
테스트 9 〉 통과 (0.05ms, 10.7MB)
테스트 10 〉 통과 (0.04ms, 10.6MB)
테스트 11 〉 통과 (0.05ms, 10.7MB)
테스트 12 〉 통과 (0.05ms, 10.7MB)
테스트 13 〉 통과 (0.04ms, 10.7MB)
테스트 14 〉 통과 (0.05ms, 10.8MB)
테스트 15 〉 통과 (0.06ms, 10.7MB)
테스트 16 〉 통과 (0.04ms, 10.6MB)
map(함수, 이터러블)을 실행하면
이터러블의 각각의 엘리먼트에 함수를 먹여서
이터레이터로 돌려준다.
이터레이터이기 때문에
확인을 하려면
리스트나 튜플 등으로 바꿔줘야 한다.
>>> map(len, ["1234","1","23"])
<map object at 0x0466e9c0>
>>> tuple(map(len, ["1234","1","23"]))
(4, 1, 2)
Java
자바의 split는 꼬다리의 빈 문자열을 날려버린다.
" ".split(" ")의 결과는 [] 텅빈 배열이다.
" s ".split(" ") 은 [, , s] 이다.
앞은 왜 살려두냐구?
" ".split(" ", -1) 을 해야 꼬다리의 빈 문자열이 인식된다.
자바에서 예측 불가능한 게
이 함수 뿐만이 아니니.. 머..
중구난방 API ㅎㅎㅎ
class Solution {
public String solution(String s) {
var sSplit = s.toLowerCase().split(" ", -1);
for (var i = 0; i < sSplit.length; i++)
if (sSplit[i].length() > 0)
sSplit[i] = sSplit[i].substring(0, 1).toUpperCase() + sSplit[i].substring(1);
return String.join(" ", sSplit);
}
}
테스트 1 〉 통과 (1.32ms, 67.2MB)
테스트 2 〉 통과 (1.80ms, 76.3MB)
테스트 3 〉 통과 (1.94ms, 76.3MB)
테스트 4 〉 통과 (1.50ms, 65.4MB)
테스트 5 〉 통과 (1.59ms, 81.4MB)
테스트 6 〉 통과 (1.29ms, 66.9MB)
테스트 7 〉 통과 (1.67ms, 83.3MB)
테스트 8 〉 통과 (1.66ms, 70.3MB)
테스트 9 〉 통과 (2.13ms, 79.1MB)
테스트 10 〉 통과 (1.37ms, 74.4MB)
테스트 11 〉 통과 (1.74ms, 71.7MB)
테스트 12 〉 통과 (2.00ms, 70.2MB)
테스트 13 〉 통과 (1.47ms, 74.1MB)
테스트 14 〉 통과 (1.80ms, 76.6MB)
테스트 15 〉 통과 (1.74ms, 70.3MB)
테스트 16 〉 통과 (2.37ms, 74.8MB)
테스트 17 〉 통과 (1.32ms, 83.9MB)
테스트 18 〉 통과 (1.61ms, 71.9MB)
빠르게....
class Solution {
public String solution(String s) {
var spaceCheck = true;
var answer = s.toLowerCase().toCharArray();
for (var i = 0; i < answer.length; i++) {
if (spaceCheck && answer[i] >= 97) answer[i] -= 32;
spaceCheck = (answer[i] == ' ');
}
return String.valueOf(answer);
}
}
테스트 1 〉 통과 (0.02ms, 79.1MB)
테스트 2 〉 통과 (0.04ms, 88.6MB)
테스트 3 〉 통과 (0.03ms, 80.8MB)
테스트 4 〉 통과 (0.04ms, 83.1MB)
테스트 5 〉 통과 (0.07ms, 74.3MB)
테스트 6 〉 통과 (0.06ms, 72.7MB)
테스트 7 〉 통과 (0.04ms, 74.1MB)
테스트 8 〉 통과 (0.03ms, 74.9MB)
테스트 9 〉 통과 (0.04ms, 76.7MB)
테스트 10 〉 통과 (0.02ms, 73.2MB)
테스트 11 〉 통과 (0.04ms, 73.9MB)
테스트 12 〉 통과 (0.03ms, 75.1MB)
테스트 13 〉 통과 (0.03ms, 77.4MB)
테스트 14 〉 통과 (0.05ms, 76MB)
테스트 15 〉 통과 (0.05ms, 75.7MB)
테스트 16 〉 통과 (0.03ms, 74.2MB)
테스트 17 〉 통과 (0.04ms, 77.2MB)
테스트 18 〉 통과 (0.03ms, 77.3MB)
반응형