백준 2750 자바 코딩테스트
-
게시물 수정 , 삭제는 로그인 필요
문제는 위의 사진과 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class practice {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] A = new int[N];
int num = 0;
for (int i = 0; i < N; i++) A[i] = sc.nextInt();
for (int i = 1; i < N; i++) {
int key = A[i];
for (int j = i - 1; j >= 0; j--) {
if (A[i] == 1) System.out.printf("%d", j);
if (A[j] > A[i]) {
A[j + 1] = A[j];
num = j;
} else {
num = j+1;
break;
}
}
if (num == 0) A[0] = key;
else A[num] = key;
}
// for (int i = 0; i < N; i++) System.out.println(A[i]);
}
}
코드를 이렇게 작성했는데 주석을 지우면 결과값이 23415 가 나옵니다.
if문을 이용하여 보니깐 A[i]의 값이 1일 때, j가 3에서 멈추는걸 확인했으나 오류를 고치지 못하고 있는 상태입니다. 왜 A[i]가 1일 때, j가 3에서 멈추는지 이유를 알려주시면 감사하겠습니다 ㅠㅠ
아무리 분석을 해봐도 이유를 모르겠네요..
if (A[j] > A[i]) {
A[j + 1] = A[j];
num = j;
} else {
num = j+1;
break;
}
이 부분에서 A[i]를 key로 고치면 결과값이 제대로 나온던데 A[i]를 key로 고치면 왜 제대로 작동하나요?
if (A[j] > A[i]) {
#백준 2750 #백준 2750 파이썬 #백준 2750 자바 #백준 2750 c++ #백준 2750 c언어 #백준 2750번 파이썬 #백준 2750 js