항해99/99club1기TIL

[99club/TIL] 5주차 - 화요일 TIL(Today I Learned)

delay100 2024. 4. 23. 22:57
728x90
반응형
SMALL

안녕하세요. delay100 입니다. 


미들러 문제.선택의 기로

https://www.acmicpc.net/problem/30970

 

30970번: 선택의 기로

첫 번째 줄에는 첫 번째 방법을 선택했을 때의 첫 번째로 고른 촉석루 미니어처의 품질과 가격, 두 번째로 고른 촉석루 미니어처의 품질과 가격을 공백으로 구분하여 순서대로 출력한다. 두 번

www.acmicpc.net

가격(pay)과 품질(quality)을 기준으로 정렬을 하면 되는 문제입니다.

chock객체로 pay와 quality를 묶어두고, 문제에서 제시한 조건을 기반으로 총 2번의 정렬을 했습니다.

정렬 시 java의 comparator을 이용하였습니다.

import java.io.*;
import java.util.*;

class chock {
	int quality;
	int pay;
	
	chock(int quality, int pay) {
		this.quality = quality;
		this.pay = pay;
	}
	
	int getQuality() {
		return this.quality;
	}
	
	int getPay() {
		return this.pay;
	}
}
public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int N = Integer.parseInt(br.readLine());
		chock[] chockList = new chock[N];
		for(int i=0; i<N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int quality = Integer.parseInt(st.nextToken());
			int pay = Integer.parseInt(st.nextToken());
			
			chockList[i] = new chock(quality, pay);
		}

		StringBuilder sb = new StringBuilder();
		
		Arrays.sort(chockList, new Comparator<chock>() {
			@Override
			public int compare(chock o1, chock o2) {
				if(o1.getQuality() < o2.getQuality()) return 1; // 품질을 기준으로 내림차순 정렬
				else if(o1.getQuality() == o2.getQuality()) {
					if(o1.getPay() > o2.getPay()) return 1; // 품질이 같은 경우 가격을 기준으로 오름차순
				}
				return -1;
			}
		});
		sb.append(chockList[0].getQuality() + " " + chockList[0].getPay() + " " + chockList[1].getQuality() + " " + chockList[1].getPay());
		sb.append("\n");
		Arrays.sort(chockList, new Comparator<chock>() {
			@Override
			public int compare(chock o1, chock o2) {
//				return Integer.compare(o1.getPay(), o2.getPay());
				if(o1.getPay() > o2.getPay()) return 1; // 가격을 기준으로 오름차순 정렬
				else if(o1.getPay() == o2.getPay()) {
					if(o1.getQuality() < o2.getQuality()) return 1; // 가격이 같은 경우 품질을 기준으로 내림차순
				}
				return -1;
			}
		});
		
		sb.append(chockList[0].getQuality() + " " + chockList[0].getPay() + " " + chockList[1].getQuality() + " " + chockList[1].getPay());
		
		bw.write(sb.toString());
		
		br.close();
		bw.close();
	}
}

w


+ 비기너 문제

골뱅이 찍기 - 돌아간 ㅍ (https://www.acmicpc.net/problem/23812)

 

23812번: 골뱅이 찍기 - 돌아간 ㅍ

서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다. 상자 안에는 반시계 방향으로 90도 돌아간 ㅍ자 모양의 골뱅이가 들어있다. 돌아간 ㅍ자 모양은 가로 및 세로로 각각 5개

www.acmicpc.net

+ 챌린저 문제

잃어버린 괄호 (https://www.acmicpc.net/problem/1541)

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 


감사합니다. 피드백 환영합니다.

728x90
반응형
LIST