개발자 톡

연습문제 톡 GBC

자바스크립트 8번만 실패하네요...ㅠㅠ

등록일
2024-01-09 17:38:43
조회수
298
작성자
suho924

const input = require('fs').readFileSync(0).toString().trim().split("\n");


const limitKmCnt = input[0].split(" ")[0]; // 리밋km 갯수

const testKmCnt = input[0].split(" ")[1]; // 테스트km 갯수

input.shift(); // 갯수 뽑아서 담았으니 제거


// 리밋 리스트 담기

const limitKmList = []; //리밋km list

for(let i=0; i<limitKmCnt; i++) limitKmList.push(input[i]);

input.splice(0, limitKmCnt); //리밋km 제거


// 테스트 리스트 담기

const testKmList = []; //테스트km list

for(let j=0; j<testKmCnt; j++) testKmList.push(input[j]);

input.splice(0, testKmCnt); //테스트km 제거


//리밋 원하는 형태 만들어 주기

let lKmstdr = 0;

const diffLimitKmList = [];

for(let li=0; li<limitKmList.length; li++) {

  if(limitKmList[li] !== undefined) {

    let distance = Number(limitKmList[li].split(" ")[0]);

    diffLimitKmList.push(`${(li == 0) ? lKmstdr : lKmstdr+1}~${lKmstdr + distance} : ${limitKmList[li].split(" ")[1]}`)

    lKmstdr += distance;

  }

}


//테스트 원하는 형태 만들어 주기

let tKmstdr = 0;

const diffTestKmList = [];

for(let ti=0; ti<testKmList.length; ti++) {

  if(testKmList[ti] !== undefined) {

    let distance = Number(testKmList[ti].split(" ")[0]);

    diffTestKmList.push(`${(ti == 0) ? tKmstdr :tKmstdr+1}~${tKmstdr + distance} : ${testKmList[ti].split(" ")[1]}`)

    tKmstdr += distance;

  }

}


//제한속도를 가장 크게 벗어난값 확인하기

let result = 0;

diffTestKmList.map((e, i) => {

  const firstVal = Number(e.split("~")[0]); //test값 첫번째

  const secondVal = Number(e.split("~")[1].split(":")[0].trim()); //test값 두번째

  const testFastValue = Number(e.split("~")[1].split(":")[1].trim());  //test 속도값

   

  diffLimitKmList.map((ee, ii) => {

     

    const stdrFirstVal = Number(ee.split("~")[0]); //기준값 첫번째

    const stdrSecondVal = Number(ee.split("~")[1].split(":")[0].trim());  //기준값 두번째

    const stdrFastValue = Number(ee.split("~")[1].split(":")[1].trim());  //기준 속도값


    //첫번째 테스트값이 어느 기준값에 속하는지 알기

    if(stdrFirstVal <= firstVal && firstVal <= stdrSecondVal) { 

      if(result < (testFastValue-stdrFastValue) ) {

        result = testFastValue-stdrFastValue;

      } 

    } 

     

    //두번째 테스트값이 어느 기준값에 속하는지 알기

    if(stdrFirstVal <= secondVal && secondVal <= stdrSecondVal) { 

      if(result < (testFastValue-stdrFastValue) ) {

        result = testFastValue-stdrFastValue;

      } 

    } 

  })

})


// console.log(diffLimitKmList)

// console.log(diffTestKmList)

console.log(result)



// 0~50: 50 || 51~90: 40 || 91~100: 30

// 0~60: 76 || 61~78: 28 || 79~100: 50


// 0~50: 90 || 51~60: 90 || 61~100: 50

// 0~50: 40 || 51~60:100 || 61~100: 40


반례를 못찾겠는데 혹시 부탁좀 드려도 될까요??

#gbc

이 카테고리의 톡 더보기