반응형
백준 Baekjoon 3077번 임진왜란 - JAVA
문제 풀이
올바른 순서가 주어졌을 때, 작성한 답안을 2개씩 비교하여 순서가 올바르면 1점씩 증가한다. N이 5일 때
{0, 1}, {0, 2}, {0, 3}, {0, 4},
{1, 2}, {1, 3}, {1, 4},
{2, 3}, {2, 4}
{3, 4}
이렇게 두개씩 짝을 지어 올바른 순서의 순서와 같은지 비교하면 된다.
해전을 HashMap을 사용하여 문자열의 순서를 저장하여 쉽게 찾을 수 있도록 하면 된다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < N; i++) {
map.put(st.nextToken(), i);
}
String[] input = br.readLine().split(" ");
int cnt = 0;
for (int i = 0; i < N - 1; i++) {
for (int j = i + 1; j < N; j++) {
if (map.get(input[i]) < map.get(input[j])) {
cnt++;
}
}
}
System.out.println(cnt + "/" + N * (N - 1) / 2);
}
}
반응형
'알고리즘(Algorithm) > 백준(Baekjoon)' 카테고리의 다른 글
[백준 Baekjoon] 11479번 통나무 건너뛰기 - JAVA (0) | 2021.11.18 |
---|---|
[백준 Baekjoon] 5212번 지구 온난화 - JAVA (0) | 2021.11.17 |
[백준 Baekjoon] 16992번 로마 숫자 만들기 - JAVA (0) | 2021.11.16 |
[백준 Baekjoon] 5014번 스타트링크 - JAVA (0) | 2021.11.15 |
[백준 Baekjoon] 1715번 카드 정렬하기 - JAVA (0) | 2021.11.15 |