Coding Problem

[BOJ 2659] 십자카드 문제

Yepchani 2025. 3. 20. 20:00
반응형

문제

십자카드 문제

https://www.acmicpc.net/problem/2659

 

 

풀이

설명

입력된 카드의 시계수가 모든 시계수들 중에서 몇 번째로 작은 시계수인지를 구하는 문제입니다.

 

1111부터 시작해서 해당 카드의 시계수까지 카운트를 증가시키며 계산합니다.

 

예시 코드

function solution() {
  const target = input().split(" ").join("");
  const targetClockNum = getClockNum(target);

  let cnt = 0;
  for (let i = 1111; i <= Number(targetClockNum); i++) {
    if (isClockNumber(i)) cnt++;
  }

  return cnt;

  function getClockNum(num) {
    let min = Number(num);
    for (let i = 0; i < 4; i++) {
      const n = Number(num.slice(i) + num.slice(0, i));
      min = Math.min(min, n);
    }
    return min.toString();
  }

  function isClockNumber(n) {
    const s = n.toString();
    if (s.length !== 4 || s.includes("0")) return false;
    return getClockNum(s) === n.toString();
  }
}

'Coding Problem' 카테고리의 다른 글

[BOJ 1913] 달팽이  (0) 2025.03.22
[BOJ 2622] 삼각형만들기  (0) 2025.03.21
[BOJ 2578] 빙고  (0) 2025.03.19
[BOJ 2548] 대표 자연수  (0) 2025.03.17
[BOJ 10610] 30  (0) 2025.03.16