Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 프로그래머스 퍼즐 게임 챌린지
- react-quill
- react hook
- 프로그래머스 숫자 타자 대회
- zustand
- 서버증설횟수
- 프로그래머스 호텔 방 배정
- 충돌 위험 찾기
- 프로그래머스 완전범죄
- JS우선순위큐
- C++
- 프로그래머스 봉인된 주문
- react상태관리라이브러리
- 컴퓨터네트워크
- 프로그래머스 비밀 암호 해독
- 프로그래머스 충돌 위험 찾기
- 최소힙우선순위큐
- 프로그래머스 석유 시추
- 프로그래머스 지게차와 크레인
- 비밀 암호 해독
- 비동기함수
- 다익스트라 Js
- react-router-dom
- BFS
- CSS
- git
- 리렌더링최적화
- 프로그래머스 택배 상자 꺼내기
- 프로그래머스 1843
- 프로그래머스 사칙연산
Archives
- Today
- Total
leebaek
[프로그래머스 Lv3] 봉인된 주문 - Javascript 풀이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/389481
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
소문자 알파벳으로 이루어진 n번째 문자열을 구하는 문제
생각
단순히 문자열을 늘려가며 세는 방식으로 풀려고 하면
26^11로 엄청 긴 문자열이기 때문에 절대 구할 수 없다.
그래서 문자열을 숫자로 바꾸는 방식,
즉 26진수처럼 처리하는 방식을 떠올렸다.
문제풀이
bans의 문자열을 숫자로 변환시킨다.
- charCodeAt()를 사용해 해당 문자의 숫자값(유니코드)을 알아낸다.
n보다 작은 숫자들을 구하고,
건너뛴 숫자만큼 n값에 더해준다.
숫자를 문자열로 변환시킨다.
- fromCharCode()를 사용해 해당 숫자의 문자를 알아낸다.
코드
function solution(n, bans) {
// 문자열을 숫자 인덱스로 변환 (a=1, b=2, …)
const strToNum = (str) => {
let num = 0;
for (let ch of str) {
num = num * 26 + (ch.charCodeAt(0) - 'a'.charCodeAt(0) + 1);
}
return num;
};
// 숫자 인덱스를 문자열로 변환
const numToStr = (idx) => {
let s = "";
while (idx > 0) {
let rem = (idx - 1) % 26;
s = String.fromCharCode('a'.charCodeAt(0) + rem) + s;
idx = Math.floor((idx - 1) / 26);
}
return s;
};
// bans를 숫자 인덱스로 변환하고 정렬
const banNums = bans.map(strToNum).sort((a, b) => a - b);
let target = n;
for (let bn of banNums) {
if (bn <= target) {
target++;
} else {
break;
}
}
return numToStr(target);
}'PS > 프로그래머스_PS' 카테고리의 다른 글
| [프로그래머스 Lv3] 숫자 타자 대회 - Javascript 풀이 (0) | 2025.11.19 |
|---|---|
| [프로그래머스 Lv3] 합승 택시 요금 - Javascript 풀이 (0) | 2025.11.18 |
| [프로그래머스 Lv2] 과제 진행하기 - Javascript 풀이 (0) | 2025.11.12 |
| [프로그래머스 Lv2] 요격 시스템 - Javascript 풀이 (0) | 2025.11.11 |
| [프로그래머스 Lv2] 석유 시추 - Javascript 풀이 (0) | 2025.11.10 |