[프로그래머스] 이상한 문자 만들기

Mark·2022년 8월 8일
0
post-thumbnail

1. 문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 
각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 
각 단어의 짝수번째 알파벳은 대문자로, 
홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, 
solution을 완성하세요.

2. 제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

3. 입출력 예

4. 문제 접근

  • 단어를 기준으로 나눔 [’try’, ‘hello’, ‘world’]
    • split 시키고 result라는 배열에 담기도록 함
  • for문으로 result에 담긴 각 원소의 인덱스를 찾음
  • 또 for문을 돌려서 방금 뽑은 각 원소의 인덱스를 단어 하나씩 꺼냄
  • 각 단어의 인덱스가 짝수이면 대문자 변환
  • 각 단어의 인덱스가 홀수이면 소문자 반환
  • 대, 소문자 변환한 각 단어들에 공백을 추가시켜줌

5. 문제 풀이에 필요한 개념

1) 문자열 배열로 변환

  • 배열.split(’나눌 기준’)
arr.split(' ') // 공백을 기준으로 문자열을 나눠서 배열로 변환 

2) 대문자 변환

  • str.toUpperCase()

3) 소문자 변환

  • str.toLowerCase()

6. 문제 풀이

function solution(s) {

    let answer = '';
    let result = s.split(' '); // 단어 기준으로 나눔 ['try', 'hello', 'world']
    
    // 1. for문으로 result에 담긴 각 원소의 인덱스 찾기 
    for (let i = 0; i < result.length; i++) { // i = 0,1,2 
        for(let j = 0; j < result[i].length; j++) { // j = t,r,y,h,e,l,l,o,w,o,r,l,d
            // 2. 각 단어의 인덱스의 짝수 판별 후 대문자 변환
            if(j % 2 === 0) {
                answer += result[i][j].toUpperCase();
            // 3. 각 단어의 인덱스의 홀수 판별 후 소문자 변환 
            } else {
                answer += result[i][j].toLowerCase();
            }
        }
        // 4. result.length -1 (2) 인덱스가 2(world) 보다 작은 0,1은 공백 추가
        if (i < result.length -1) {
            answer += ' ';
        }
    }
    return answer;
}
let s = "try hello world"

console.log(solution(s))

문제 풀기(프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/12930

profile
개인 공부 정리

0개의 댓글