[백준] 3047 ABC - Node.js

송철진·2023년 4월 11일
0

백준-Node.js

목록 보기
60/69

문제

https://www.acmicpc.net/problem/3047

Solution

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 사이의 정수를 반환합니다.

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글