Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- node.js postgresql
- intelij sqlmap
- 리액트네이티브
- 레드마인테마
- 레드마인
- 레드마인 테마
- .env
- 패키지
- multi instance
- rpm목록
- 배열크기
- dotenv
- Redmine theme
- intelij mybatis
- tomcat install
- node postgresql
- 메소드한줄
- 멀티 인스턴스
- nodejs 환경변수처리
- yum설치목록
- 배열컬럼
- Node
- pg환경변수
- yum목록
- redmine
- Java
- sqlmap warring
- rpm설치목록
- sqlmap 경고
- CentOS
Archives
- Today
- Total
ZeroRadish
[백준] 2659번 십자카드 문제(JAVA) 본문
https://www.acmicpc.net/problem/2659
문제 해결 방법
1. 입력 받기
- 네 자리 숫자 4개를 입력 받습니다.
2. 가능한 최소의 수 찾기
- 네 자리 숫자 4개의 순열을 회전시켜 가장 작은 수를 찾습니다. 예를 들어, 입력이 1 2 3 4 라면, 1234, 2341, 3412, 4123 중에서 가장 작은 수는 1234입니다.
3. 1111부터 9999까지의 모든 네 자리 숫자에 대해 가능한 최소의 수를 계산
- 각 숫자에 대해 최소의 수를 계산하고, 해당 최소 수를 true로 표시하는 boolean 배열을 사용합니다.
4. 주어진 수까지의 가능한 최소 수의 순서 계산
- 주어진 수보다 작은 모든 가능한 최소 수를 카운트하여 순서를 출력합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] Ns = new int[4];
for (int i = 0; i < Ns.length; i++) {
Ns[i] = Integer.parseInt(st.nextToken());
}
int N = findMin(Ns);
boolean[] clockN = new boolean[10000];
for (int i = 1111; i <= 9999; i++) {
if (String.valueOf(i).contains("0")) {
continue;
}
int[] digits = new int[4];
int num = i;
for (int j = 3; j >= 0; j--) {
digits[j] = num % 10;
num /= 10;
}
int minClockN = findMin(digits);
clockN[minClockN] = true;
}
int cnt = 1;
for (int i = 1111; i < N; i++) {
if (clockN[i]) {
cnt++;
}
}
System.out.println(cnt);
}
private static int findMin(int[] nums) {
int minNum = 9999;
for (int i = 0; i < 4; i++) {
int rotatedNum = 0;
for (int j = 0; j < 4; j++) {
rotatedNum = rotatedNum * 10 + nums[(i + j) % 4];
}
if (rotatedNum < minNum) {
minNum = rotatedNum;
}
}
return minNum;
}
}
Comments