본문 바로가기

study/Challenge

패스트캠퍼스 JavaScript 코딩테스트 131개 예제 & CS지식으로 끝내기 강의 4주차

오늘의 요약:

1. 배열 정복

2. 오늘도 평화로운 백준..문제풀이

 

 

#1 배열문제

오늘의 문제 주제는 배열을 활용하는 문제들에 대한 풀이이다. 그런데 첫 문제부터 런타임오류와 틀렸습니다가 나를 괴롭힌다.

 

10818번 - 최소, 최대

#2 오늘도 평화로운..

첫문제부터 이렇게 막히면 어떡하냐..

 

let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let len = Number(input[0]);
let arr = input[1].split(' ').map(Number);
let min=1000001;
let max=-1000001;
arr.map(el=>{
    if(el < min) min = el;
    if(el > max) max = el;
 })
console.log(min, max);

reduce를 사용한 다음의 풀이법도 있다.

 

그렇지만 며칠 쉬었더니 그런거라 생각하고 다음문제를 풀어보자.

 

이 문제 접근법은 맞았기 때문에 코드만 첨부하고 다음으로 넘어가자!

 

2562번 - 최댓값

 이 문제는 어렵지 않게 해결할 수 있었다. 줄바꿈되서 출력되는 형태에 주의하고 index에 +1을 해주어야 몇 번째인지 표시할 수 있다는 것에 주의해야한다.

let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let arr = input.map(Number);
let index = -1;
let max = arr.reduce((a,b)=> Math.max(a,b))
index = arr.indexOf(max)
console.log(`${max}\n${index+1}`)

역시 또다른 간결한 풀이를 제시해주셨다. 레전드 강사님이 맞다...

 

3052번 - 나머지

혼자서 잘 풀었는데 Set의 사용법이 아직은 엄청 익숙한 편이 아니라서 다음과 같이 모범답안으로 조금 수정해야했다. ㄹadd, size 등 Set 객체에서 자주 쓰이는 것들은 기억하고 있으면 좋을 것 같다.

let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let data = input.map(Number);
let mySet = new Set();

for(let i = 0; i < 10; i++){
  mySet.add(data[i]%42);
}

console.log(mySet.size);

 

4344번 - 평균은 넘겠지

오늘은 이 문제까지다..!! 약간 까다로워서 브론즈 1 문제인 것 같지만 실버,골드도 아니고 브론즈에서 1-5 정도의 난이도 차이는 큰 의미가 없어보인다. 소숫점 처리 이런 것들이 부가적으로 들어간 느낌이다.

 

 

출력초과가 무엇인지 찾아보았는데.. 일단 틀렸습니다라고 생각하면 편하다고 한다. 원하는 출력형식을 지키지 않은 것이 잘못이라고 한다.

let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let testCases = Number(input[0]);
for (let t=1; t<=testCases; t++){
  let data = input[t].split(' ').map(Number);
  let n = data[0];
  let summary = 0;
  for (let i=1; i<= n; i++) {
    summary +=data[i];
  }
  let average = summary / n;
  let cnt = 0;
  for (let i = 1; i <= n; i++)
    if (data[i] > average) cnt += 1;
  
  console.log(`${(cnt / n*100).toFixed(3)}%`);
}

이렇게 답을 정리할 수 있다. 다소 길게 느껴졌던 4주 챌린지가 종료되었다. 다음 시간에는 후기와 함께 여정을 돌아보자.

 

 

https://fastcampus.co.kr/dev_online_upjscodingtest

 

UPSKILL : Javascript 코딩테스트 131개 예제 & CS지식으로 끝내기 | 패스트캠퍼스

25시간 대비 과정 / '코테 레전드' 유튜버 강사님께 핵심만 배우고 빠르게 합격하세요.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.