[프로그래머스] Lv.1 이상한 문자 만들기 - JavaScript

2025. 7. 2. 12:41·CodingTest

문제 설명

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

 

제한 사항

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

 

입출력 예

s return 
"try hello world" "Try HeLlO WoRlD"

 

문제 풀이

function solution(s) {
    var answer = [];
    var words = s.split(" "); // 이렇게되면 try, hello, world로 나누어짐

    for(let i=0; i<words.length; i++){
        var word = words[i]; // 각 단어별로
         let temp = "";
        for(let j=0; j<word.length; j++){ // try 안으로 진입
            // 이어붙여줄 문자열 선언
            temp += (j%2===0 ) ? word[j].toUpperCase() : word[j].toLowerCase();
            
        }
        answer.push(temp);
    }
    return answer.join(" ");
    
}

 

처음에는 그냥 전체 words 배열에서 순회를 해서 판별하는건줄 알고, 그렇게 풀었다가 아니라는걸 깨달았다..ㅎㅎ 

문자열 s에서 공백을 기준으로 split(" ")을 사용해 단어 배열로 변환했다. 그리고 각 단어를 순회해, 글자 인덱스마다 대/소문자를 구분해서 처리해야 하므로 이중 for문으로 단어의 j번째 문자가 짝수면 대문자로, 홀수면 소문자로 처리하였다.

그리고 마지막에 join을 사용해 공백으로 합쳐주면 끝

 

다른 풀이

function solution(s) {
  return s.split(" ").map(word =>[...word].map((ch, idx) =>idx % 2 === 0 ? ch.toUpperCase() : ch.toLowerCase()).join("")).join(" ");
}

 

이렇게 map을 이용해서 한줄로 푸는 방식도 있었다. 나도 이렇게 짧게 작성해보고 싶은데 아직은 어렵다 😭

그러다가 문득 for문이랑 map이랑 시간복잡도가 얼마나 차이날까 궁금해서 찾아봤는데 for문이 더 빠르다고 한다.

만약 map으로 풀었다가 시간초과가 나는 경우가 있다면 for문으로 풀어도 좋을 것 같다.

'CodingTest' 카테고리의 다른 글

[프로그래머스] Lv.1 소수 만들기 - JavaScript  (1) 2025.07.06
[프로그래머스] Lv.1 소수 찾기 - JavaScript  (0) 2025.07.05
[프로그래머스] Lv.1 두 개 뽑아서 더하기 - JavaScript  (0) 2025.07.02
[프로그래머스] Lv.1 정수 제곱근 판별 - JavaScript  (3) 2024.01.28
[프로그래머스] Lv.1 핸드폰 번호 가리기 - JavaScript  (1) 2024.01.27
'CodingTest' 카테고리의 다른 글
  • [프로그래머스] Lv.1 소수 찾기 - JavaScript
  • [프로그래머스] Lv.1 두 개 뽑아서 더하기 - JavaScript
  • [프로그래머스] Lv.1 정수 제곱근 판별 - JavaScript
  • [프로그래머스] Lv.1 핸드폰 번호 가리기 - JavaScript
김애룽
김애룽
개발하면서 공부한 것들을 끄적입니다
  • 김애룽
    김애룽의 개발 아카이브
    김애룽
  • 전체
    오늘
    어제
    • 분류 전체보기 (39)
      • React (10)
      • Next.js (2)
      • JavaScript (5)
      • CodingTest (10)
      • 대외활동 (3)
      • Git (1)
      • CS (5)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Next.js
    리액트
    javascript
    정처기
    props
    js
    var
    const
    useMemo
    정보처리기사
    hooks
    멋쟁이사자처럼
    react
    코드잇
    Programmers
    SSR
    호이스팅
    한성대 멋사
    프로그래머스
    useCallback
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
김애룽
[프로그래머스] Lv.1 이상한 문자 만들기 - JavaScript
상단으로

티스토리툴바