개발자 톡

연습문제 톡 위험한 효도

너무 어렵게 푼거 아닌가 싶은데..

등록일
2024-11-27 23:32:31
조회수
135
작성자
zkj9404
const fs = require('fs');


const [a,b,d] = fs.readFileSync('input.txt','utf-8').split(' ').map(Number);


const moveCalc = (current,moveDistance,totalDistance)=>{
    if(current + moveDistance >= totalDistance){
        return totalDistance - current;
    }else return moveDistance;
}


let isTouched = false;
let isFinished = false;
/** 소요 시간 */
let time = 0;
/** 현재 위치 */
let currentLocation = 0;
/* true: (터치전 기준) 술래가 앞을 바라보고 있음, false: (터치전 기준) 술래가 뒤를 바라보고 있음 */
let targetLookFront = false;
// console.log(currentLocation,d)
   
while(!isFinished){
    // console.log({isTouched,time,currentLocation,targetLookFront})
    // isFinished=true;
    if(isTouched){
        /** 돌아오는 구간 */
        if(!targetLookFront){
            /** 술래가 뒤를 보고 있다 (남우 움직일 수 있음) */
            const move = moveCalc(currentLocation,b,d);
            // console.log('움직이는값: ',move)
            time += b;
            currentLocation += move;
            targetLookFront = true;
            /** 출발지로 돌아오면 */
            if(currentLocation == d){
                time -= (b - move);
                isFinished = true;
                currentLocation = 0;
                targetLookFront = false;
            }
            continue;
        }


        if(targetLookFront){
            /** 술래가 앞을 보고 있다 (남우 움직일 수 없음) */
            time += a;
            targetLookFront = false;
            continue;
        }
    }else{
        /** 술래한테 가는 구간 */


        /** 술래가 뒤를 돌아보고 있는 상황 */
        if(!targetLookFront){
           const move = moveCalc(currentLocation,a,d)
            time += a;
            currentLocation += move;
            targetLookFront = true;
            /** 술래를 터치하면 */
            if(currentLocation == d){
                time -= (a - move);
                isTouched = true;
                targetLookFront = false;
                currentLocation = 0;
            }
            continue;
        }
        /** 술래가 앞을 바라보고 있는 상황 */
        if(targetLookFront){
            time += b;
            targetLookFront = false;
            continue;
        }
    }
    /** 종료 */     
    // if(isFinished){
    
    //   console.log(time)  
    // } 
}
// console.log('종료될거임ㅋ')
console.log(time)


#위험한_효도

이 카테고리의 톡 더보기