https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보
www.acmicpc.net
import java.util.*;
public class S1_1205 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int current_size = sc.nextInt();
int score = sc.nextInt();
int max_size = sc.nextInt();
int[] arr = new int[max_size];
if(current_size == 0) { //현재 점수판에 아무런 점수가 없을때 무슨 점수를 내든 나는 1등이 됨
System.out.println(1);
return;
}
for(int i = 0 ; i<current_size; i++){
arr[i] = sc.nextInt();
}
if(current_size == max_size){//점수판이 꽉차서 새로 입력받은 점수를 넣으려면 기존의 점수가 하나 삭제되어야할 때
if(score > arr[current_size-1]){//새로 입력받은 점수가 기존의 점수보다 높아서 순위에 변동이 있는 경
arr[current_size-1] = score;
Arrays.sort(arr);
for(int i = arr.length -1 ; i >= 0 ; i--){
if(arr[i] == score) {
System.out.println(arr.length-i);
return;
}
}
}
else System.out.println(-1); //새로 입력받은 점수가 기존의 점수보다 높지 않을때
}
else{//점수판이 꽉차지 않아서 일단 디밀기만 하면 됨
arr[current_size] = score;
Arrays.sort(arr);
for(int i = arr.length -1 ; i >= 0 ; i--){
if(arr[i] == score) {
System.out.println(arr.length-i);
return;
}
}
}
}
}
쉬운 문제 같았는데 반례찾는게 생각보다 까다로워서 오래 걸렸다. 문제 보면 냅다 코드부터 쓰는 버릇이 있는데 코드 쓰기 전에 구조를 조금 생각하고 푸는 습관을 들여야 할 것 같다. 또, 스스로 반례찾는 연습을 꾸준히 해야할 것 같다.
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
import java.util.*;
class Word implements Comparable<Word>{
String word;
int len;
public Word(String word, int len){
this.word = word;
this.len = len;
}
@Override
public int compareTo(Word word){
if(this.len == word.len) return this.word.compareTo(word.word);
else return this.len - word.len;
}
}
public class S5_1181 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String[] arr = new String[num];
Word[] list = new Word[num];
for(int i = 0; i<num; i++){
arr[i] = sc.next();
list[i] = new Word(arr[i], arr[i].length());
}
Arrays.sort(list);
for(int i = 1 ; i<arr.length; i++){
if(list[i].word.equals(list[i-1].word)) continue;
else System.out.println(list[i-1].word);
}
System.out.println(list[arr.length-1].word);
}
}
금방 풀긴 했는데 조금 이상한 방법으로 푼 것 같아서 이 문제를 푼 다른 사람의 코드도 참고해야겠다고 생각했다.
https://www.acmicpc.net/problem/1085
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램
www.acmicpc.net
'모각코 > 2022 하계 모각코' 카테고리의 다른 글
20220810 5주차 [진저비어] 모각코 결과 (0) | 2022.08.10 |
---|---|
20220810 5주차 [진저비어] 모각코 계획 (0) | 2022.08.10 |
220802 4주차 [진저비어] 모각코 계획 (0) | 2022.08.03 |
20220727 3주차 [진저비어] 모각코 결과 (0) | 2022.07.28 |
20220727 3주차 [진저비어] 모각코 계획 (0) | 2022.07.27 |