본문 바로가기
BaekJoon/Bronze

[BOJ/JAVA] 백준 1296 : 팀 이름 정하기 (자바)

by HoonSikE 2023. 8. 7.
반응형
SMALL
문제 정보
  문제명   - 팀 이름 정하기
  난이도   - 브론즈 I
문제 번호 - 1296번

문제 링크

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

 

1296번: 팀 이름 정하기

연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다. 이환

www.acmicpc.net


문제
연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다.
이환이가 만든 공식은 사용하려면 먼저 다음 4가지 변수의 값을 계산해야 한다.
 - L = 연두의 이름과 팀 이름에서 등장하는 L의 개수
 - O = 연두의 이름과 팀 이름에서 등장하는 O의 개수
 - V = 연두의 이름과 팀 이름에서 등장하는 V의 개수
 - E = 연두의 이름과 팀 이름에서 등장하는 E의 개수
그 다음, 위에서 구한 변수를 다음 식에 입력하면 팀 이름의 우승할 확률을 구할 수 있다.
((L+O) × (L+V) × (L+E) × (O+V) × (O+E) × (V+E)) mod 100
연두의 영어 이름과 팀 이름 후보 N개가 주어졌을 때, 우승할 확률이 가장 높은 팀 이름을 구해보자. 확률이 가장 높은 팀이 여러가지인 경우 사전 순으로 가장 앞서는 팀 이름이 우승할 확률이 가장 높은 것이다.

입력
첫째 줄에 연두의 영어 이름이 주어진다. 둘째 줄에는 팀 이름 후보의 개수 N이 주어진다. 셋째 줄부터 N개의 줄에 팀 이름이 한 줄에 하나씩 주어진다.
연두의 영어 이름과 팀 이름은 길이는 1보다 크거나 같고, 20보다 작거나 같으며, 알파벳 대문자로만 이루어져 있다. N은 50보다 작거나 같은 자연수이다.

출력
첫째 줄에 우승할 확률이 가장 높은 팀 이름을 출력한다.

예제 입력/출력
예제 입력 예제 출력
LOVE
3
JACOB
FRANK
DANO
FRANK
JANE
4
THOMAS
MICHAEL
INDY
LIU​
INDY
LILLY
1
PIERRE​
PIERRE
MERYLOV
5
JOHN
DAVE
STEVE
JOHN
DAVE​
DAVE
LLOL
4
BVERON
CVERON
AVERON
DVERON​
AVERON

알고리즘 분류
● 구현
● 문자열
● 정렬


소스코드
package Lv1_Bronze;

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

/**
 * @author HanHoon
 * @category 구현, 문자열, 정렬
 * https://www.acmicpc.net/problem/1296
 */
public class BOJ_B1_1296_팀_이름_정하기 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder str = new StringBuilder();

        String S = br.readLine();
        String LOVE = "LOVE";

        // N
        int N = Integer.parseInt(br.readLine());

        int Max = Integer.MIN_VALUE;
        String Winner = "";

        for (int n = 0; n < N; n++){
            String name = br.readLine();

            int[] value = new int[4];

            for(int i = 0; i < LOVE.length(); i++){
                value[i] = S.length() - S.replace(LOVE.charAt(i)+"", "").length();
                value[i] += name.length() - name.replace(LOVE.charAt(i)+"", "").length();
            }

            int score = 1;
            for(int i = 0; i < value.length; i++){
                for(int j = i+1; j < value.length; j++){
                    score *= value[i]+value[j];
                }
                score %= 100;
            }

            if(Max == score && !Winner.equals("")){
                String[] tmp = new String[2];
                tmp[0] = Winner;
                tmp[1] = name;
                Arrays.sort(tmp);
                Winner = tmp[0];
            }else if(Max < score){
                Max = score;
                Winner = name;
            }
        }

        str.append(Winner);

        System.out.print(str);
        br.close();
    }
}

 


BaekJoon List
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글