https://programmers.co.kr/learn/courses/30/lessons/12930?language=javascript
문제
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
결괏값 예시
s | return |
"try hello world" | "TrY HeLlO WoRlD" |
기본 제공 틀
function solution(s) {
var answer = '';
return answer;
}
풀이 [JavaScript]
짝수 = 대문자, 홀수 = 소문자 (짝, 홀수는 인덱스 기준)
우선 들어온 s값을 공백(' ')을 기준으로 split했다.(['try', 'hello', 'world'])
그리고 이 각각의 try, hello, world의 값을 돌게 되는데, try(splited[0]번째 값)을 예시로 들어보자면, try의 0번째 인덱스는 인덱스 기준으로 짝수이므로, 짝수인 경우, 대문자로 바꾸어서 try배열에 바꿔 넣어주고, 홀수면 소문자로 바꾸어서 다시 넣어주는 방식으로 로직을 구현했다.
이렇게 try를 끝내고 나면 배열에 공백을 넣어주어 ['TrY', ' ', 'HeLlO', ' ','WoRlD',' ']가 되고, 마지막의 공백은 필요없으므로, pop함수를 이용해서 제거해준다. ['TrY', ' ', 'HeLlO', ' ','WoRlD']
그 후, join함수를 사용해서 Try HeLlo WoRlD로 더해주어서 리턴해주면 된다.
function solution(s) {
var splited = s.split(' ');
var tmp = [];
var answer ='';
for(var i in splited){
for(var j in splited[i]){
if(j%2 ===0 ){
tmp.push(splited[i][j].toUpperCase());
}else{
tmp.push(splited[i][j].toLowerCase());
}
}
tmp.push(' ');
}
tmp.pop();
answer = tmp.join('');
return answer;
}
아래는 위의 방식과는 다르게 배열이 아닌 문자열에 문자를 추가하는 방식으로 구현해보았다.
['try', 'hello', 'world'] 에서 인덱스에 맞게 값만 바꾸어 tmp에 'TrY' 를 만들어주고 splited[0]에 넣어주었다.
그렇게 하면 splited = ['TrY', 'HeLlO', 'WoRlD']가 되고, 이 값들을 join함수를 이용해서 다 합해주면 원하는 결과값이 나오게 된다.
위의 방법에서는 각자의 문자열을 대/소문자로 바꾸어준뒤, 다시 배열에 각각의 위치에 맞게 넣어주었지만, 이 방식은, 각 배열의 i번째의 단어를 한번에 string인 tmp에 넣어준 후, i번째 배열에 단어 자체를 다시 넣어주는 방식으로 훨씬 깔끔하다.
이 방식을 사용하면 굳이 필요없는 공백을 생성하지 않고도 join함수를 사용하여 원하는 값을 만들어낼 수 있다.
function solution(s) {
var splited = s.split(' ');
for (var i in splited) {
var tmp = '';
for (var j in splited[i]) {
if(j % 2 === 0){
tmp += splited[i][j].toUpperCase();
} else {
tmp += splited[i][j].toLowerCase();
}
}
splited[i] = tmp;
}
return splited.join(' ');
}
채점 결과 [JavaScript]
'알고리즘 스터디 > 프로그래머스 스킬체크 레벨 1(끝)' 카테고리의 다른 글
[프로그래머스 스킬체크 레벨 1] 행렬의 덧셈 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.15 |
---|---|
[프로그래머스 스킬체크 레벨 1] K번째 수 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.15 |
[프로그래머스 스킬체크 레벨 1] 약수의 합 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
[프로그래머스 스킬체크 레벨 1] 문자열 내림차순으로 배치하기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
[프로그래머스 스킬체크 레벨 1] 문자열을 정수로 바꾸기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
댓글