-
[Java] BOJ 1205 등수 구하기개발자 취업/코딩테스트 준비 2023. 6. 8. 16:19반응형
1205번: 등수 구하기
첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보
www.acmicpc.net
테스트 케이스
10 1 10 1 1 1 1 1 1 1 1 1 1 -> -1 10 1 11 1 1 1 1 1 1 1 1 1 1 -> 1 3 90 10 100 100 90 -> 3 3 80 10 100 100 90 3 80 10 100 100 90 -> 4 0 1 10 -> 1
정답 코드
- 엣지케이스가 많은 문제
- 간단하게 생각하면 문제가 더 쉽다
import java.io.*; import java.util.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int N, P; static long S; static List<Long> list; public static void main(String[] args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(System.out)); st = new StringTokenizer(br.readLine(), " "); N = Integer.parseInt(st.nextToken()); S = Long.parseLong(st.nextToken()); P = Integer.parseInt(st.nextToken()); if (N == 0) { System.out.println(1); } else { list = new ArrayList<>(); st = new StringTokenizer(br.readLine(), " "); for (int i = 0; i < N; i++) { list.add(Long.parseLong(st.nextToken())); } int ans = -1; for (int i = 0; i < list.size(); i++) { long now = list.get(i); if (now < S) { list.add(i, S); ans = i; break; } } if (ans != -1) { int pos = list.indexOf(S) + 1; System.out.println(pos); } else { if (N < P) { if (list.get(list.size() - 1) == S) { System.out.println(list.indexOf(S) + 1); } else if (list.get(list.size() - 1) != S) { System.out.println(list.size() + 1); } } else { System.out.println(-1); } } } } }
'개발자 취업 > 코딩테스트 준비' 카테고리의 다른 글
[JAVA] BOJ 1063 킹 (0) 2023.06.10 [Java] BOJ 11652 카드 (0) 2023.06.09 [Java] BOJ 16198 에너지 모으기 (0) 2023.06.07 [Java] BOJ 1476 날짜 계산 (0) 2023.06.07 [Java] BOJ 10610 30 (0) 2023.06.06