본문 바로가기

공부/TIL

[TIL] 24.06.17 백준 1373번 js

반응형

내가 푼 문제 📖

 

내가 작성한 코드 💻

let input = require("fs")
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : __dirname+"/input.txt")
  .toString()
  .trim()
  .split('')

let results = ''

while(input.length){
  let ocl = input.splice(-3).join('')
  if(ocl.length !== 3) ocl = ocl.padStart(3, '0')
  results += parseInt(ocl, 2).toString(8)
}

console.log(results.split('').reverse().join(''))

 

어려웠던 점

1. 기존 변환 방법

// input == '11001100'
parseInt(input, 2).toString(8)

// results '314'

 

2진수 -> 8진수로 변환 방법으로 위 방식을 많이 사용했었는데 입력 조건에 2진수 길이가 1,000,000을 넘지 않는다. 가 있었다. 그래서 위 방식으로 변환하게 되면 범위가 너무 커지기 때문에 방법을 생각해 내는데 어려움이 있었다.

 

깨달은 점

1. 끊어서 계산하기

let ocl = input.splice(-3).join('')
results += parseInt(ocl, 2).toString(8)

 

뒤에서부터 3자리씩 끊어서 8진수로 변환을 진행했고, 

if(ocl.length !== 3) ocl = ocl.padStart(3, '0')

 

3자리가 아닐 경우 부족한 개수만큼 앞에 0을 붙여주는 방식으로 문제를 풀었다.

 

회고 🧐

 

며칠을 쉬고 문제를 풀었더니 뇌가 살짝 굳어버린 느낌이다.

다시 불을 질러보자~!!🔥🔥


출처 🏷️

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

반응형

'공부 > TIL' 카테고리의 다른 글

[TIL] 24.07.16 코딩 컨벤션이란?  (0) 2024.07.16
[TIL] 24.07.15  (0) 2024.07.15
[TIL] 24.07.09 백준 10844번 js  (0) 2024.07.09
[TIL] 24.07.08  (0) 2024.07.08
[TIL] 24.06.12 백준 1676번 js  (2) 2024.06.12
[TIL] 24.06.11 백준 6588번 js  (0) 2024.06.11
[TIL] 24.06.10 React 트랙을 신청한 이유  (0) 2024.06.10
[TIL] 24.06.03 백준 10820번 JS  (0) 2024.06.03