• 티스토리 홈
  • 프로필사진
    redpome
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
redpome
  • 프로필사진
    redpome
    • 분류 전체보기 (50)
      • 내일배움캠프 (23)
      • 웹개발 지식 (2)
      • 프로그래머스 (8)
      • React (7)
      • 코딩테스트 (1)
      • UI-UX (1)
      • 타입스크립트 (2)
      • Next.js (3)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 이상한 문자 만들기
        2025년 02월 10일
        • redpome
        • 작성자
        • 2025.02.10.:51

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

         

        프로그래머스

        SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

        programmers.co.kr

         

        문제에서는 단어 단위로 나뉘어진 문자열이 주어져서 나는 2번 쪼개기로 했다.

        처음 주어진 문자열을 나누고 나눠진 문자의 인덱스를 다뤄 작성하는 것이다.

         

        function solution(s) {
            return s.split(' ').map((word) => { 
                return word.split('').map((char, index) => {
                    return index % 2 === 0 ? char.toUpperCase() : char;
                }).join('');
            }).join('');
        }


        물론 return을 안 해줘서 undefined가 되는 문제가 있었다, 그런데 테스트 케이스는 통과하고 다른 문제는 몽땅 틀렸다.

         

        어쩌면 문자열 s를 나눌때 split(' ')으로 공백 1개가 들어간게 아니라 여러개일 경우가 케이스로 존재할 수 있다고해서 안 되는 경우를 나눠봤다.

         

        1. 공백이 여러 개가 있는 경우
        2. 문자가 아닐 때 split으로 나누는 경우
        3. s의 양끝에 공백이 존재하는 경우

         

        근데 보통 이럴때는 정규식표현을 사용하는 경우가 많길래 다른 사람들은 어떤 풀이를 했나 봤더니 바로 정규표현식이 나왔다.

        그리고 아래는 공백 구분 시 정규표현식을 사용한 코드이다.

        function solution(s){
            return s.split(/(\s)/).map((word)=>{ 
                return word.split('').map((char,index)=>{
                    return index % 2 === 0 ? char.toUpperCase() : char.toLowerCase();
                }).join('');
            }).join('');
        }


        당연히 GPT 도움을 받았다. /(\s)/는 /으로 시작과 끝, \s를 통해 스페이스, 탭, 줄 바꿈 등의 공백 문자가 포함되는 것을 의미하고 그것을 기준으로 나누었다.

        차이점이 한 가지 더 있다면 삼항 연산자에서 char.toLowerCase()를 통해 false인 경우 소문자로의 변환을 명시적으로했다.

        한 가지 더 안 되는 경우를 생각해보니, 원본이 되는 s에 처음부터 대소문자 여부가 문제에 적히지않았었다... 그러니까 대문자가 섞인 문자열이 주어졌을 수도 있었다.

         

        위의 코드를 돌리면 다행히 통과된다.

         

        정규표현식에서 공백처리 정도는 암기하는 것이 나을것 같다.

        '프로그래머스' 카테고리의 다른 글

        카드 뭉치  (0) 2025.03.07
        최솟값 만들기 (그리디 알고리즘)  (0) 2025.02.25
        프로그래머스 - 과일 장수  (0) 2025.02.07
        프로그래머스 - 소수 만들기  (2) 2025.01.14
        프로그래머스-문자열 내 마음대로 정렬하기  (1) 2025.01.02
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바