[대회] 송도고 코드마스터 2023 Open Contest_Java

ChoRong0824·2023년 6월 17일
0

Java

목록 보기
24/31
post-thumbnail

출처 : 백준 송도고 코드마스터(https://www.acmicpc.net/contest/view/1029)

필자는,
알고리즘 공부를 하면서 스터디 분한테 백준에서 개최하는 좋은 코딩테스트 대회가 온라인으로 있다고 정보를 들어 대회를 참가하게 되었습니다.
C번까지 풀고 시간을 보니 16시정도 되었네요.
더이상 푸는 것은 정신건강에 해롭다는 생각에 여기까지만 풀기로 결심했습니다.
고등학생 분들이 이런 문제들을 가볍게(?) 푼다는 것이 정말 놀랍네요.. ㅠ
전 정말 어려웠는데.. 알고리즘 실력이 부럽네여 🥺
야망이 엄청나신 위대한 정보 선생님 혹시나 이 포스팅을 보게되신다면 댓글을 남겨주세요..
정말 어려웠습니다 C번...😱
출제자 분들이 어떻게 이런 문제를 생각해내신 것인지 정말 경의롭습니다.🫡
고등학생 학우분들께서 이런 문제를 벌써 학생 때부터 접하면서 언어에 친숙해진다면,
정말 엄청난 개발자가 되겠다는 생각이 들었으며, 대학생인 저에게는 엄청난 자극이 되었습니다.
서론이 너무 길었네요.
결론 : 앞으로 더욱 열심히 공부 하겠습니다.
아래 문제들은 전부 자바로 풀었습니다.


A번, 코드마스터 2023

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine().trim();
        String[] inputs = input.split(" ");

        for (String word : inputs) {
            switch (word) {
                case "SONGDO":
                    System.out.print("HIGHSCHOOL ");
                    break;
                case "CODE":
                    System.out.print("MASTER ");
                    break;
                case "2023":
                    System.out.print("0611 ");
                    break;
                case "ALGORITHM":
                    System.out.print("CONTEST ");
                    break;
            }
        }
        System.out.println();
    }
}

B번, 점심시간 레이스

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

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken()); // 층수
        int m = Integer.parseInt(st.nextToken()); // 학교의 너비(가로 길이)
        int k = Integer.parseInt(st.nextToken()); // 레이스에 참가하는 반 수
        int[] totalTime = new int[k];
        
        for (int i = 0; i < k; i++) {
            st = new StringTokenizer(br.readLine());
            int f = Integer.parseInt(st.nextToken()); // 학교 층
            int d = Integer.parseInt(st.nextToken()); // 교실 위치
            int stairsTime = 0;
            
            if (f > 1) { // 계단 내려가는 시간: 1층 아래로 내려갈 때마다 2초가 소요된다고 가정
                stairsTime = (f - 1) * 2;
            }
            int corridorTime = Math.abs(m - d) * 2; // 복도 이동 시간 계산
            totalTime[i] = stairsTime + corridorTime;
        }
        
        int minTime = totalTime[0];
        int winner = 1;
        
        for (int i = 1; i < k; i++) {
            if (totalTime[i] < minTime) {
                minTime = totalTime[i];
                winner = i + 1;
            }
        }
        bw.write(String.valueOf(winner));
        br.close();
        bw.flush();
        bw.close();
    }
}

C번, 정보 선생님의 야망

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;
        int n = Integer.parseInt(br.readLine());
        int[][] students = new int[n][5];

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < 5; j++) {
                students[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        int maxStudent = -1;
        int[] maxDays = new int[5];

        for (int i = 0; i < 4; i++) {
            for (int j = i + 1; j < 5; j++) {
                int checkingStudent = 0;

                for (int k = 0; k < n; k++) {
                    if (students[k][i] == 1 && students[k][j] == 1) {
                        checkingStudent++;
                    }
                }

                if (checkingStudent > maxStudent) {
                    maxStudent = checkingStudent;
                    maxDays = new int[]{0, 0, 0, 0, 0};
                    maxDays[i] = 1;
                    maxDays[j] = 1;
                }
            }
        }

        System.out.println(maxStudent);
        for (int i = 0; i < 5; i++) {
            System.out.print(maxDays[i] + " ");
        }
    }
}


90등에서 실시간으로 100위로 밀려난 필자.
고수분들 그만 풀어주세요... 100등이고 싶습니다 ㅠㅠ

포스팅 : 16시경(비공개로 생성 후, 시험 종료 후 공개로 변환)

profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.

2개의 댓글

comment-user-thumbnail
2023년 6월 17일

대회에 참여해주셔서 감사하고, 정말 수고하셨습니다!
A~E2까지는 예상 난이도가 브론즈~실버이니, 해설을 참고해서 풀어보시는 걸 추천드려요!
코딩 테스트 공부 화이팅입니다! 😄

1개의 답글