스터디 코딩 문제풀이 node.js

현재 javascript에 대한 이해가 너~~~무 부족하다.

10년전에 배우기도했고 알고리즘 수업도 들었던터라 대충 인강 조금보고 구글링을 통해 문제를 풀려고 했으나 백준 코드제출에 맞는 코드를 짜기에는 무리였다. 예를들어 처음부터 맨 밑2798번 부터 시작했는데 어떤식으로 해결을 하면 되는지는 알겠으나 javascript의 문법, 함수, 메소드에 대한 지식이 없다보니 input부터 막혔다. input을 왜 input[0] 이렇게 써서 사용하는것이며 require('fs')는 왜 필요한것이고 input을 선언하는데 왜 저리 많은 메소드 체이닝을 하는것이고 기타등등... 그래서 결국 입력받는거를 포기하고 자체적으로 난수를 할당하는 식으로 해서 풀었는데 겨우3문제 푸는데 일요일 오전이 날라갔다...

결론은 javascript의 기초지식을 읽히고 클론 코딩을 해봄으로서 함수, 메소드, 문법을 이해하고 익숙해지는게 우선일것같다.

백준 1000번 A+B

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(' ');
let a = parseInt(input[0]);
let b = parseInt(input[1]);
console.log(a+b);

백준 1010번 다리놓기

function rand(min, max) { //N,M에 할당하기 위한 무작위 숫자를 위해 함수 선언
  return Math.floor(Math.random() * (max - min +1)) +min;
}   

let N, M, T
let B = 1 // 다리개수 인데 0으로 해놓으면 곱해도 0이니 1로 선언

T = rand(1, 10) // 테스트할 개수
console.log("T만큼 테스트, T: ", T)

for(i=0; i<T; i++){   //테스트할 개수 만큼 아래 과정 반복
  N = rand(1, 29)
  M = rand(N, 29) // 각각 N,M에 무작위 숫자 할당

  for(j=M-N+1; j<=M; j++){  // 순열을 for문으로 구현
    B = B*j
  }
  console.log("N: ", N, "M: ", M, "경우의 수: ", B)
  B=1
}

결과

백준 2798번 문제


let N, M  
let sum = []  // 여기까지 변수 선언

function rand(min, max) {
  return Math.floor(Math.random() * (max - min +1)) +min;
}   // N,M, 카드 숫자에 할당할 값을 무작위로 주기는데 최소, 최대값 사이에서 무작위로 할당되야 하므로 그에 대한 함수 선언

N = rand(3, 100)
M = rand(10, 300000)
let card = new Array(N) // 카드개수가 N개 이므로 카드숫자가 들어갈 배열N개 선언 

for(i=0; i<N; i++) {
  card[i] = rand(1, 100000)
  console.log("카드에 쓰여있는 수: ", card[i])
}   // 카드 N개에 1부터 100000까지 무작위로 숫자 할당

for(i=0; i<N-2; i++) {
  for(j=1; i<N-1; i++){
    for(k=2; i<N; i++){
      if(M<card[i] + card[j] + card[k]){
        continue
      }
      else{
        sum.push(card[i]+card[j]+card[k]);
      }
    }
  }
}   // 카드 3개 숫자의 합이 M보다 작으면 배열sum에 하나씩 쌓으며 할당.

sum.sort((a,b) => a-b)    // 각 값을 오름차순으로 정렬
console.log("N: ", N)
console.log("N: ", M)
console.log("nearbyM: ", sum[sum.length-1]) // 정렬한 값중에 제일 큰 값이 배열 맨 끝에 있을 것이므로 제일 끝에있는 값 출력세요

결과 (카드에 쓰여있는 수는 많아서 자름)

가끔씩 undefined 가 나올 때가 있는데 3개의 합이 M보다 작은게 없어서 그렇다.

좋은 웹페이지 즐겨찾기