상세 컨텐츠

본문 제목

백준 1547 : 공

밀라 알고리즘 스터디

by qkrtnals 2025. 1. 13. 17:12

본문

💡기본 정보

유형
: 시뮬레이션
풀이 날짜
: 2025년 01월13일 
풀이방법 한줄 요약
: 선택한 컵과 공이 들어있는 컵 비교해서 공 들어있는 컵 번호 찾기

 

💡문제에서 구해야 할 것

컵 3개를 탁자 위에 일렬로 엎어 놓고 컵의 번호는 맨 왼쪽 컵부터 순서대로 1,2,3번 
먼저 1번 컵의 아래에 공을 하나 넣음 두 컵을 골라 위치를 맞바꿈
컵의 위치를 총 M번 바꿀 것

- 입력 : 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며 , M은 50보다 작거나 같은 자연수
             둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어짐 . X번 컵과 Y번 컵의 위치를 서로 바꾸는 것을 의미
             X와 Y의 값은 3보다 작거나 같고 X와 Y가 같을 수도 있음 . 컵을 이동시킨 이후 공이 컵 바깥에 있는 경우는 없음
  출력 : 첫째 줄에 공이 들어있는 컵의 번호를 출력함 , 공이 사라져서 컵 밑에 없는 경우에는 -1 출력 

 

💡알고리즘 설계

- 선택한 컵과 공이 들어있는 컵을 비교해서 같은 컵인지 확인함 

- 공이 들어있는지 정해진 횟수에 따라 탐색하다가 최종 결과값 출력

💡CODE

const fs = require("fs");
const cup = fs.readFileSync(0,"utf8").toString().split("\n");
const num = parseInt(cup[0]);

function Change(cup, result) {
  let [cup1, cup2] = cup.toString().trim().split(" ");
  if (cup1 == result) {
    result = cup2;
  } else if (cup2 == result) {
    result = cup1;
  }
  return result;
}

function Ball() {
  let result = 1;
  for (let i = 1; i <= num; i++) {
    if (i >= cup.length || !cup[i]) {
      return -1;
    }
    result = Change(cup[i], result);
  }
  return result <= 0 ? -1 : result;
}
console.log(Ball());

 

💡시간복잡도

💡 틀린 이유 & 틀린 부분 수정

공이 사라져서 컵 밑에 없는 경우에는 -1을 출력하는 부분을 구현 안함  

💡 다른 풀이 or 기억할정보

관련글 더보기