반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
** Javascript
1) 맨 처음 제출한 풀이는 이랬다. 프로그래머스 접한 지 얼마 안돼서 푼 문제여서 혼자 되게 뿌듯했던 기억이 있다
지금 보면 약간 흑역사지만
function solution(s) {
var [ ...strings ] = s.split(" ");
var answers = [];
for (var string of strings) {
var temp = "";
for (var i=0; i<string.length; i++) {
if (i % 2 === 0) {
temp += string[i].toUpperCase();
} else {
temp += string[i].toLowerCase();
}
}
answers.push(temp);
}
return answers.join(" ");
}
저 ...string 를 내가 왜 했나 모름
2) 풀이를 짧게 줄여 보기
function solution(s) {
return s.split(" ")
.map((word) =>
Array.from(word).reduce((acc, curr, index) =>
acc += (index % 2) ? curr.toLowerCase() : curr.toUpperCase(), "")).join(" ");
}
function solution(s) {
return s.split(' ')
.map(word =>
word.split('').map((char, key) =>
key % 2 ? char.toLowerCase() : char.toUpperCase()).join('')).join(' ')
}
** Java
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
int count = 0;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == ' ') {
count = 0;
} else {
chars[i] = (count++ % 2 == 0) ? Character.toUpperCase(chars[i]) : Character.toLowerCase(chars[i]);
}
}
return String.valueOf(chars);
}
}
원래는 첫 for 문에서 .split(" ") 두번째 for 문에서 split("") 하여 풀었는데 통과가 되지 않았다.
질문에서 보니 " " 가 여러 개 붙어있는 테스트케이스가 있다고 한다.
그래서 다른 사람들의 풀이를 보니 " " 를 만난 경우 인덱스를 0으로 돌린 뒤 짝홀을 따지게 하였다.
그래서 나도 같은 방식으로 풀었다.
그리고 string의 경우 문자열.toUpperCase() 을 사용하는데 char 의 경우 Character.toUpperCase(문자열) 을 사용한다는 것을 이번에 알았다.
** Python
일단 열심히 풀어봤다.
def solution(s):
answer = []
words = s.split(" ")
for i in range(len(words)):
word = ''
for j in range(len(words[i])):
word += words[i][j].upper() if j % 2 == 0 else words[i][j].lower()
answer.append(word)
return ' '.join(answer)
보아 하니 꼭 for i in range(len(words)) 하지 않고 바로 for x in s.split(" ") 이렇게 써도 되나 보다.
아래는 내 풀이와 가장 비슷하게 푼 다른 사람의 풀이다.
def toWeirdCase(s):
res = []
for x in s.split(' '):
word = ''
for i in range(len(x)):
c = x[i].upper() if i % 2 == 0 else x[i].lower()
word = word + c
res.append(word)
return ' '.join(res)
추천을 가장 많이 받은 풀이는 테스트가 개편되면서 통과여부가 달라졌다는 말이 있어서 가져오지 않았다.
반응형
'프로그래머스 > level 1' 카테고리의 다른 글
[프로그래머스] 문자열을 정수로 바꾸기 (0) | 2021.08.23 |
---|---|
[프로그래머스] 약수의 합 (0) | 2021.08.14 |
[프로그래머스] 자릿수 더하기 (0) | 2021.08.14 |
[프로그래머스][위클리챌린지] 2주차 상호평가 (0) | 2021.08.14 |
[프로그래머스][위클리챌린지] 1주차 부족한 금액 계산하기 (0) | 2021.08.09 |