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

ChoRong0824·2023년 6월 28일
0

대회

목록 보기
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개의 답글