(scofe) 2021 - 1차 후기
스코페 2021 공지 https://www.wanted.co.kr/events/scofe2021
내 생애 첫 코딩 테스트(?)였던 스코페 2021 후기를 이제서야 기록해보려 한다.
- 일시: 2021년 3월 20일 (토) 14시~18시
- 제한 시간: 4시간
- 문제 수: 6문제
문제 1 - 대여 시간을 추천해드립니다
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int max_start = Integer.MIN_VALUE;
int min_end = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
String time = br.readLine();
String start = time.substring(0, 2) + time.substring(3, 5);
int start_time = Integer.parseInt(start);
String end = time.substring(8, 10) + time.substring(11, 13);
int end_time = Integer.parseInt(end);
if (max_start < start_time) max_start = start_time;
if (min_end > end_time) min_end = end_time;
}
if (max_start > min_end) { // 겹치는 부분이 없는 경우
System.out.println(-1);
} else {
String start_hour = String.valueOf(max_start / 100);
if (start_hour.length() == 1) start_hour = "0" + start_hour;
String start_minute = String.valueOf(max_start % 100);
if (start_minute.length() == 1) start_minute = "0" + start_minute;
String end_hour = String.valueOf(min_end / 100);
if (end_hour.length() == 1) end_hour = "0" + end_hour;
String end_minute = String.valueOf(min_end % 100);
if (end_minute.length() == 1) end_minute = "0" + end_minute;
System.out.println(start_hour + ":" + start_minute + " ~ " + end_hour + ":" + end_minute);
}
}
}
중복되는 구간이 있는지 확인하는 단순 구현 문제였다.
문제 2 - 배송 전략 실험
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] visit = new int[n];
int[] dp = new int[n];
String line = br.readLine();
for (int i = 0; i < n; i++) {
visit[i] = Integer.parseInt(String.valueOf(line.charAt(i)));
}
dp[0] = visit[0];
dp[1] = visit[1];
for (int i = 2; i < n; i++) {
if (visit[i] == 0) {
dp[i] = 0;
} else {
dp[i] = dp[i - 2] + dp[i - 1];
}
}
System.out.println(dp[n - 1]);
}
}
끝까지 도달할 수 있는 경우의 수를 구하는 DP 문제였다.
문제 3 - 상품 배치 추천
import java.io.*;
class Main {
static int n;
static int[][] map;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
map = new int[n][n];
int[] size_total = new int[n + 1];
int total = 0;
for (int i = 0; i < n; i++) {
String line = br.readLine();
for (int j = 0; j < n; j++) {
map[i][j] = Integer.parseInt(String.valueOf(line.charAt(j)));
}
}
size_total[1] = getSizeOne();
total += size_total[1];
for (int size = 2; size <= n; size++) {
size_total[size] = 0;
for (int i = 0; i <= n - size; i++) {
for (int j = 0; j <= n - size; j++) {
if (map[i][j] == 1) { // 시작점으로 할 수 있다면
if (makeRec(size, i, j)) { // 사각형을 만들 수 있다면
size_total[size]++;
}
}
}
}
total += size_total[size];
}
System.out.println("total: " + total);
for (int i = 1; i <= n; i++) {
if (size_total[i] != 0) {
System.out.println("size[" + i + "]: " + size_total[i]);
}
}
}
public static int getSizeOne() {
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (map[i][j] == 1) {
cnt++;
}
}
}
return cnt;
}
public static boolean makeRec(int size, int start_i, int start_j) {
for (int i = start_i; i < size + start_i; i++) {
for (int j = start_j; j < size + start_j; j++) {
if (map[i][j] == 0) { // 못 만든다면
return false;
}
}
}
return true;
}
}
삼중 반복문을 통해 답을 구할 수 있다고 하였는데 나는 다소 복잡하게 푼 것 같다..
문제 4,5,6번은 풀긴 했지만 맞았는지 확실하지 않아서 코드는 올리지 않겠다.
문제 4 - 안 본 컨텐츠 없게 해주세요
데이터를 알맞은 자료구조로 정의하고 정렬하는 것이 문제였다. 이 문제를 풀다가 헷갈리는 바람에 시간이 다 가버려서 자료구조 다루는 실력이 아직 부족하다고 느껴졌다.
문제 5 - 시선이동
dfs로 풀긴 했는데 시간이 없어서 제대로 마무리 짓지 못했던 문제다. 문제 의도는 bfs였다고 한다.
문제 6 - 팝업스토어
dp를 활용해 최댓값을 구하는 문제였다. dp를 활용해 풀긴 했으나, 이것도 시간이 부족해 완벽하게 제출하진 못했다.
후기
4시간 동안 카페에서 빡 집중해서 푸느라 시간은 금방 갔지만 끝나고 진이 다 빠졌다 ㅠㅠ
처음 도전한 코딩 테스트에서 1차 대회 합격이라는 좋은 결과를 얻어서 너무나도 기뻤다!
코딩 테스트 준비를 제대로 시작한 건 1월이었고, 그동안 실력이 늘고 있는지 잘 느끼지 못했는데 이번 기회를 통해 성장하고 있다는 것을 조금이나마 체감할 수 있었던 것 같다.
Author And Source
이 문제에 관하여((scofe) 2021 - 1차 후기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hammii/스코페scofe-2021-후기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)