코딩테스트 챌린지
[코딩테스트 챌린지] 백준 1568 덩치 (java)
zincah
2024. 9. 15. 20:31
반응형
문제
문제 탐색하기
1. 문제의 조건에 맞게 코드 구현하기
N명의 키와 몸무게를 입력받아 덩치의 순위를 매기는 프로그램을 구현하는 문제입니다.
몸무게와 키가 모두 크지 않으면 덩치가 크다고 할 수 없다는 조건을 생각해보면 입력받은 사람의 덩치 등수를 매길 수 있습니다.
loop를 돌기전에 덩치 순위 변수를 1로 선언합니다.
현재 지정된 사람의 몸무게와 키가 비교하는 사람보다 모두 작을때만 순위를 +1 하게되므로 서로 비교했을 때 덩치의 순위를 매길 수 없는 사람들을 동일한 등수로 유지시킬 수 있습니다.
코드 설계하기
- 덩치 등수를 비교할 사람의 수 입력
- 2차원 배열 입력
- 순위를 지정할 rank 변수를 1로 선언
- 다음 배열의 값 보다 현재 배열의 값이 모두 작을 때 순위 변수의 값을 +1 한다ㅣ.
- 출력한 뒤 rank 변수를 다시 1로 초기화한다.
정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class TheBody {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 1. 덩치 등수를 비교할 사람의 수를 입력
int N = Integer.parseInt(reader.readLine());
int[][] a = new int[N][2];
// 2. 2차원 배열 입력
StringTokenizer st;
for(int i=0; i<N; i++){
st = new StringTokenizer(reader.readLine());
int[] b = new int[2];
b[0] = Integer.parseInt(st.nextToken());
b[1] = Integer.parseInt(st.nextToken());
a[i] = b;
}
// 3. 순위를 저장할 변수 선언
int rank = 1;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if(i == j) continue;
// 4. 다음 배열의 값보다 현재 배열의 값이 모두 작을때 순위를 올린다.
if(a[i][0] < a[j][0] && a[i][1] < a[j][1]){
rank++;
}
}
System.out.print(rank + " "); // 5. 출력
rank = 1; // 6. 순위를 초기화한다.
}
}
}
반응형