250x250
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
- jest
- 구름톤
- 과제 진행하기
- mutationobserver
- Hermes Engine
- 날짜 테스트
- 리액트네이티브 엔진
- 리액트네이티브
- 테스트 Date
- JavaScript
- 자바스크립트
- Google 애널리틱스
- nextjs
- 귤 고르기
- 호텔 대실
- 프로그래머스
- ResizeObserver
- Leetcode #javascript #알고리즘 #Algorithms #js
- 구름톤 챌린지
- mock date
- 구름톤챌린지
- 중첩 점
- 테이블 해시 함수
- create-next-app
- 헤르메스 엔진
- 통신망분석
- nextjs-performance
- 연결 요소 제거하기
- 최솟갑 구하기
- Jest uuid syntax
Archives
- Today
- Total
나만보는개발공부블로그
[구름 먼데이 챌린지] 폴더 폰 자판 본문
문제
10년 전, 구름이가 처음으로 구매했던 휴대폰은 폴더 폰이다. 이 폴더 폰의 자판은 최근의 휴대폰의 입력 방식과는 차이가 있다.
구름이가 사용했던 폴더 폰의 자판은 아래 그림과 같다.
자판은 9개의 버튼으로 이루어져 있다. 이 자판은 이용해서 문자를 입력하는 방법은 아래와 같다.
- 버튼을 한 번 누르면 그 버튼에 해당하는 숫자를 입력할 수 있다.
- 버튼을 k번 누르면 그 버튼의 k-1번째에 해당하는 문자를 입력할 수 있다. 예를 들어 5번 버튼을 두 번 누르면 J가 입력된다.
- 만약 그 버튼에 적혀있는 숫자와 문자의 개수보다 더 많은 버튼을 누르면, 다시 숫자, 첫 번째 문자, 두 번째 문자... 순서로 입력되는 문자가 반복된다. 예를 들어 6번 버튼을 다섯 번 누르면 6이 입력되고, 여섯 번 누르면 M이 입력된다.
구름이가 폴더 폰의 숫자 버튼을 누른 순서가 주어진다. 이 순서를 보고 구름이가 원래 입력하려고 했던 문장을 유추해보자.
입력 예시
2
11
출력 예시
.
해결 방안
먼저 폴더 폰의 자판을 객체형태로 구현해주고 입력에서 누른 버튼이 연속적으로 달라지는 부분에서 누른 순서의 카운트를 자판기의 숫자와 문자 총합의 나머지를 결과값에 추가해서 보여준다.
자바스크립트 코드
// Run by Node.js
const readline = require('readline');
let input = [];
let rl = readline.createInterface({ input: process.stdin });
rl.on('line', (l) => {
input.push(l);
}).on('close', () => {
let n = Number(input[0]);
let numbers = input[1].split("").map(Number);
let pad = {
1 : ['.',',','?',"!"],
2 : ['A','B','C'],
3 : ['D','E','F'],
4 : ['G','H','I'],
5 : ['J','K','L'],
6 : ['M','N','O'],
7 : ['P','Q','R','S'],
8 : ['T','U','V'],
9 : ['W','X','Y','Z']
}
let count = 0;
let result = '';
for(let i=0; i<numbers.length; ++i){
if(numbers[i] !== numbers[i+1]) {
let selected = count % (pad[numbers[i]].length + 1);
count = 0;
if(pad[numbers[i]]) {
if(selected === 0) {
result += numbers[i];
} else {
result += pad[numbers[i]][selected-1];
}
}
} else {
count++;
}
}
console.log(result);
})
'Algorithms' 카테고리의 다른 글
[구름 먼데이 챌린지] 단풍나무 (0) | 2023.10.10 |
---|---|
[구름 먼데이 챌린지] 구름이의 여행 (1) | 2023.10.09 |
[구름 먼데이 챌린지] 카드 교환하기 (1) | 2023.10.06 |
[프로그래머스] 부대 복귀 (0) | 2023.09.27 |
[프로그래머스] 호텔 대실 (0) | 2023.09.20 |