본문 바로가기
PS/CodeForces

CodeForces 1593A - Elections (Java)

by Nahwasa 2021. 11. 27.

문제 : https://codeforces.com/contest/1593/problem/A

 

 

  입력으로 들어온 a,b,c 중 max값을 구한다. 이 때 다음과 같이 나눠서 확인해볼 수 있다.

 

1. 현재 확인하는 값(a,b,c 중 하나)이 max값과 같고, max값과 동일한 후보자가 2명 이상인 경우 = 1

 

2. 현재 확인하는 값(a,b,c 중 하나)이 max값과 같고, max값과 동일한 후보자가 1명인 경우 = 0

 

3. 현재 확인하는 값이 max값보다 작은 경우 = max - 현재확인중인값 + 1

 

 

코드 : github

import java.io.DataInputStream;
import java.io.IOException;
 
public class Main {
    private static int res(int max, int cnt, int cur) {
        if (max == cur && cnt > 1)
            return 1;
        if (max == cur)
            return 0;
        return max-cur+1;
    }
 
    private static void solution() throws Exception {
        int t = nextInt();
        StringBuilder sb = new StringBuilder();
        while (t-->0) {
            int a = nextInt();
            int b = nextInt();
            int c = nextInt();
            int max = Math.max(a, Math.max(b, c));
            int cnt = 0;
            if (a==max) cnt++;
            if (b==max) cnt++;
            if (c==max) cnt++;
 
            sb.append(res(max,cnt,a)).append(' ').append(res(max,cnt,b)).append(' ').append(res(max,cnt,c)).append('\n');
        }
        System.out.println(sb);
 
    }
 
    public static void main(String[] args) throws Exception {
        initFI();
        solution();
    }
 
    private static final int DEFAULT_BUFFER_SIZE = 1 << 16;
    private static final int MAX_CHAR_LEN_FOR_NEXT_LINE = 64;
    private static DataInputStream inputStream;
    private static byte[] buffer;
    private static int curIdx, maxIdx;
 
    private static void initFI() {
        inputStream = new DataInputStream(System.in);
        buffer = new byte[DEFAULT_BUFFER_SIZE];
        curIdx = maxIdx = 0;
    }
 
    private static int nextInt() throws IOException {
        int ret = 0;
        byte c = read();
        while (c <= ' ') c = read();
        boolean neg = (c == '-');
        if (neg) c = read();
        do {
            ret = ret * 10 + c - '0';
        } while ((c = read()) >= '0' && c <= '9');
        if (neg) return -ret;
        return ret;
    }

    private static byte read() throws IOException {
        if (curIdx == maxIdx) {
            maxIdx = inputStream.read(buffer, curIdx = 0, DEFAULT_BUFFER_SIZE);
            if (maxIdx == -1) buffer[0] = -1;
        }
        return buffer[curIdx++];
    }
}

댓글