백준 1296번

hong030·2023년 2월 9일
0

*solved.ac 기준 브론즈 1단계 문제



풀이)
1. 이기는 팀의 이름은 공식 계산값이 가장 커야 한다.
2. 만약 공식 계산 값이 같은 두 개 이상의 팀 이름이 있다면 알파벳 순으로 가장 먼저 오는 팀이 이긴다.
예를 들어 a.compare(b)<0 일 경우 a가 먼저 오고, a.compare(b)>0 일 경우 b가 먼저 오고, a.compare(b)=0 일 경우 a와 b는 같다.

내 코드)


import java.io.*;

public class Main{
	public static void main(String[]args) throws IOException{
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		
		String yeondu = bf.readLine();
		int num = Integer.parseInt(bf.readLine());
		
		int L = 0, O = 0, V = 0, E = 0;
		
	
		
		for(int i=0; i<yeondu.length();i++) {
			if (yeondu.charAt(i) == 'L')
				L++;
			if (yeondu.charAt(i) == 'O')
				O++;
			if (yeondu.charAt(i) == 'V')
				V++;
			if (yeondu.charAt(i) == 'E')
				E++;
		}
		
		int score = 0;
		String name[] = new String[num];
		String winner = "Z";
		for(int i=0 ; i<num ; i++) {
			name[i] = bf.readLine();
			int mL = L, mO = O, mV = V, mE = E;
			for(int j=0 ; j<name[i].length() ; j++) {
				if (name[i].charAt(j) == 'L')
					mL++;
				if (name[i].charAt(j) == 'O')
					mO++;
				if (name[i].charAt(j) == 'V')
					mV++;
				if (name[i].charAt(j) == 'E')
					mE++;
			}
			int score_name = ((mL+mO) * (mL+mV) * (mL+mE) * (mO+mV) * (mO+mE) * (mV+mE)) % 100;
			//System.out.printf("%d %d %d %d: %s의 점수 %d\n", mL, mO, mV, mE, name[i], score_name);
			if (score_name>score) {
				score = score_name;
				winner = name[i];
			}
			if ((score_name==score)&&(winner.compareTo(name[i])>0)) {
				winner = name[i];
			}
		}
		System.out.println(winner);
	}
}

profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글