https://www.acmicpc.net/problem/3047
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const solution = input => {
const [a, b, c] = input[0].split(' ').map(Number).sort((a,b)=>a-b)
const obj = {
'A': a,
'B': b,
'C': c
}
let result = ''
input[1].split('').forEach(el => result += ' ' + obj[el])
return result.trim()
}
console.log(solution(input))
A < B < C
이므로 주어진 입력값 첫째줄은 오름차순으로 정렬해서 변수 a, b, c에 각각 할당했다.
임의의 객체 obj에 A, B, C 키에 대한 값으로 a, b, c를 넣고
주어진 입력값 둘째줄에 대해 순회하여 객체 obj의 값을 호출하는 방식으로 구현했다.
대문자 A, B, C가 UTF-16코드로 65, 66, 67인 것을 이용.
오름차순으로 정렬된 배열 a에 대해서
A = a[0] = a[65-65]
B = a[1] = a[66-65]
C = a[2] = a[67-65]
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim()
.split('\n');
const solution = input => {
const a = input[0].split(' ').sort((a, b) => a - b);
return input[1].split('').map(el => a[el.charCodeAt() - 65]).join(' ')
}
console.log(solution(input));
charCodeAt()
주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환합니다.