백준 25314번 코딩은 체육과목 입니다 javascript

zin·2023년 11월 14일
0

문제 링크

문제

오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이
NN바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”

혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int는
44바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int는
88바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다
44바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 long long long int는
1212바이트, long long long long int는
1616바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.

혜아가
NN바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?

입력

첫 번째 줄에는 문제의 정수 NN이 주어진다.
(4N1000(4\le N\le 1\, 000; NN44의 배수))

출력

혜아가 NN바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.

내 풀이

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' '); 

const num = parseInt(input[0])

for (let i = 1; i <=num; i++){
    if(i % 4 === 0) {
        console.log(i.length='long')
    } 
}   
console.log('int')

리팩토링

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' '); 

let long = '';

for(let i=1; i<= ~~input/4; i++){
    long += "long ";
}
console.log(`${long}int`);

다른 사람 풀이

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' '); 

console.log(`${"long ".repeat(+input/4)}int`);

후기

리팩토링 전은 생각없이 몇초컷으로 쓴 창피한 코드.. 맞은게 신기하다.
다른사람 풀이를 보니 깨달았다. for문 대신 repeat() 메서드를 사용하여 간결해지고, 메모리와 시간이 확 줄어든다. 역시 메서드를 잘 써야한다..!

profile
프론트엔드 가보자고-!

0개의 댓글