백준 풀이 🍪
백준 1076번 <저항>
섭웨이
2022. 8. 12. 02:08
백준 1076번 <저항>
브론즈 2
https://www.acmicpc.net/problem/1076
1076번: 저항
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
www.acmicpc.net
let fs = require('fs');
let [c1, c2, c3] = fs.readFileSync('/dev/stdin').toString().split('\n');
let color = ["black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"];
let num = color.indexOf(c3);
let res = (String(color.indexOf(c1)) + String(color.indexOf(c2))).padEnd(2 + num, '0');
if (c1 == 'black' && c2 !== 'black') {
console.log(String(color.indexOf(c2)).padEnd(1 + num, '0'));
} else if (c1 == 'black' && c2 == 'black') {
console.log('0');
} else {
console.log(res);
}
Array.indexOf(element) 은 element를 배열에서 찾은 다음에 그 인덱스 값을 반환합니다.
1. 첫 번째 색깔의 인덱스 값 반환, 문자열 변환
2. 두 번째 색깔도 인덱스 값 반환, 문자열 변환
3. 둘을 합쳐줌 (문자열 상태)
4. 뒤에 0의 개수와 인덱스 값도 똑같기 때문에, padEnd()로 0을 num(세 번째 색깔 인덱스 값) 만큼 채워줌
5. black이 첫 번째 색깔로 입력받았을 때, 둘 다 black 일 때 경우를 계산해서 if else 문 작성
지금 보니깐 제가 어떠한 생각으로 코드를 짰는지 모를 정도로 가독성이 좋지 않네요ㅋㅋ...
const colors = require("fs").readFileSync("/dev/stdin").toString().split(/\s+/);
const table = {
black: 0,
brown: 1,
red: 2,
orange: 3,
yellow: 4,
green: 5,
blue: 6,
violet: 7,
grey: 8,
white: 9,
};
console.log(
(table[colors[0]] * 10 + table[colors[1]]) * 10 ** table[colors[2]]
);
다른 분이 작성하신 코드입니다.
일단...
console.log(
(table[colors[0]] * 10 + table[colors[1]]) * 10 ** table[colors[2]]
);
이 부분..!
아 왜 이런 생각을 못할까요ㅋㅋㅋㅋ
쉬운 길을 돌아돌아 가는 느낌이네요ㅎㅎ 점차 나아지겠죠? 나아져야 합니다...
객체로 문제를 푸셨다는 점!
생각을 해보긴 했는데 배열을 통한 인덱스 접근이 더 수월할 것 같아서.. 다음에 시도해볼게요.