[대회] 2023 연세대학교 미래캠퍼스 슬기로운 코딩생활 open Contest

ChoRong0824·2023년 6월 28일

대회

목록 보기
1/2
post-thumbnail


A - 선물


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

class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int X = Integer.parseInt(st.nextToken());

        int[] A = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(st.nextToken());
        }

        int minCost = Integer.MAX_VALUE;
        for (int i = 0; i < N - 1; i++) {
            int cost = A[i] * X + A[i + 1] * X;
            minCost = Math.min(minCost, cost);
        }
        System.out.print(minCost);
    }
}

B - 운명


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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int X = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());
        int[] A = new int[2 * X];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < 2 * X; i++) {
            A[i] = Integer.parseInt(st.nextToken());
        }
        int[] leftSocks = new int[K + 1];
        int[] rightSocks = new int[K + 1];
        for (int i = 0; i < X; i++) {
            leftSocks[A[i]]++;
            rightSocks[A[X + i]]++;
        }
        long caseCount = 0;
        for (int i = 1; i <= K; i++) {
            if (leftSocks[i] != 0) {
                caseCount += (long) leftSocks[i] * (X - rightSocks[i]);
            }
        }
        System.out.print(caseCount);
    }
}

C - 해킹



저에겐 아직 어렵네요 ㅜㅜ ...
(정부기준)
예제 입력 1에 대해서 필자가 생각을 한 결과,

  1. 정부는 도로 1-4를 선택하고, 국가 1의 -0 (시스템 없음)과 국가 4의 돈 1000을 획득하게됨. --> 이때 총 액수: 1000 이되고,
  2. 정부는 도로 2-3을 선택하고, 국가 2의 -0(시스템 없음)과 국가 3의 돈 100을 탈취하게된다면, 시스템이 이미 설치되어 있으므로 -1(시스템)을 고려해야함. 또한 이미 설치 되어있는 경우를 생각하게 되면, 최종 백만 초과 됨으로 : 1000 + 99 = 1099가 됨.
  3. 두 도로 선택 후 시스템이 도로 3-5에 설치되어 각 국가 이웃에서 돈을 받기 시작
  4. 결론 : 최종 액수: 1099 - 97(시스템 설치에 의한 차감되기때문임) = 1002가 된다.

예제입력 2에 대해, 필자의 생각

총 3개의 국가(N)와 0개의 도로(M), 정부가 도로 목록 X=1개를 선정할 것이고, 시스템은 도로 목록에 있는 도로 Y=1개를 설치하게됨.
그렇게 된다면, 국가별 돈의 양은 -->(국가 기준) 국가 1은 1, 국가 2는 0, 국가 3은 0 이 됨. 또한, 도로연결이 되어있지않음.
따라서, 시스템이 설치할 도로 목록은 "2"가 됨.
결론, 정부는 도로 1개를 선택해야 하지만, 도로 연결이 없기 때문에 선택할 수 있는 도로가 없게됨. 따라서 정부는 돈을 얻을 수 없, 만약 이 상황이라면 최종 출력 값은 -1이 되고, -1 은 정부가 돈을 얻을 수 없음을 나타냄.

  • 문제를 이해했다기 보단, 테스트케이스 기반으로 이해? 했어서 정확하지 않을 수 있는점 참고 바랍니다.

나머지 문제들






등수는 최종적으로 52등에 마무리 했으나, 19번 부터 62등까지 2sol을 했습니다.
자바만 아니었더라면.. 저도 공동 19등이라는..?

네. 착각입니다. 합리화 오졌네요,,

profile
정진, "어제보다 더 나은 오늘이 되자"

2개의 댓글

comment-user-thumbnail
2023년 6월 28일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아 잘봤습니다 ^^

1개의 답글