[프로그래머스] 문자열 여러 번 뒤집기

2024. 10. 10. 17:16·PS

 


 

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

개념

문자열, 구현

 

 

실행 결과

 

 

 

 

 

구현 코드(JavaScript)

function solution(my_string, queries) {
  let arr = my_string.split("");

  // 쿼리 s-e만큼 반복
  for (let [s, e] of queries) {
    // s-e만큼 자르고 뒤집기
    let sub = arr.slice(s, e + 1).reverse();

    // 원래 배열에 s+i부터 다시 삽입
    for (let i = 0; i < sub.length; i++) {
      arr[s + i] = sub[i];
    }
  }

  return arr.join("");
}

 

 

 

 

코드 설명

먼저 쿼리는 여러개의 배열로 구성되어 있다.

각 배열은 순서를 뒤집어서 배치해야할 시작 인덱스와 끝 인덱스가 들어있다.

일단 입력 받은 문자열(my_string)을 문자별로 쪼개서 arr라는 배열에 삽입한다.

 

시작 인덱스에서 끝 인덱스를 뒤집을 때는 반복문을 중첩으로 사용하지말고, reverse 함수를 사용하면 간단하게 구현할 수 있다. 이 뒤집은 문자열을 sub라고 정의하면 다음과 같이 작성할 수 있다.

let sub = arr.slice(s, e + 1).reverse();

 

slice를 이용해 구간을 나누고 reverse로 뒤집은 문자열이다.

이제 이 문자열을 다시 원래 문자열에 넣어야 한다.

 

// 원래 배열에 s+i부터 다시 삽입
    for (let i = 0; i < sub.length; i++) {
      arr[s + i] = sub[i];
    }

 

다시 삽입할때는 arr에 있던 위치 그대로 넣어야한다.

이때 arr 인덱스는 i에 시작인덱스를 더한 값임을 명심하자.

 


 

 

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

[백준] Fly me to the Alpha Centauri  (0) 2024.10.17
[프로그래머스] 타겟 넘버  (0) 2024.10.12
[프로그래머스] 주사위 게임 3  (1) 2024.10.09
[백준] 10830번: 행렬 제곱  (0) 2024.10.08
[백준] 2178번: 미로 탐색  (0) 2024.10.01
'PS' 카테고리의 다른 글
  • [백준] Fly me to the Alpha Centauri
  • [프로그래머스] 타겟 넘버
  • [프로그래머스] 주사위 게임 3
  • [백준] 10830번: 행렬 제곱
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (14)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

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

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    통계학
    네트워크
    파이썬
    OS
    React
    github
    Python
    Java
    JavaScript
    DP
    C++
    BAEKJOON
    생활코딩
    그리디
    자바기반응용프로그래밍
    백준
    운영체제
    코드트리
    자바스크립트
    BFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
[프로그래머스] 문자열 여러 번 뒤집기
상단으로

티스토리툴바