반응형
문제
십자카드 문제
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 |