항해 16기 본과정 시작일 (23년 8월 14일) 로부터 1.5 * 2 주 앞선 7월 25일 월요일, 개강 준비 과정 - 선택 트랙 과정이 시작되었다.
(원래 어제 작성을 했어야했는데 문제 푸느라 정신이 없어서 오늘 작성하게 되었다.)
항해99를 지원하면 해당 기수 슬랙 (Slack) 채널에 초대를 받는데 본과정 시작 4주 정도 전부터 개강 준비 과정 신청을 받는다.
처음 1.5 주는 선택 트랙인데 말 그대로 필수 과정이 아니며 기초 언어 학습 주차이다.
항해 본과정과는 다르게 월-토 15기-21시까지 스터디가 진행된다.
총 4가지 트랙이 있는데
1. JS 언어 기초
2. Java 언어 기초
3. 알고리즘(Python)
4. 알고리즘(Java)
중에서 한 가지를 선택하고 1.5주 동안 같은 과목을 고른 사람들끼리 모여서 스터디를 하는 것이다.
나는 현재 NodeJS를 주스택으로 희망하는 상황인데 언어 자체를 배우기보단 알고리즘을 하면서 배우는 게 효율적일 것 같아 Python 알고리즘으로 선택하였다.
조를 배정받게 되면 게더 (Gather) 에서 팀원들과 모여서 스터디를 진행하게 된다.

매일 특정 시간에 기술 매니저님과의 간단한 면담 (이라기보단 나의 컨디션 체크 및 현재 하고 있는 것 등등에 대해서 짧게 문답하는 시간) 이 있으며 그 외 시간에는 선택한 과목에 따라서 인터넷 강의와 코딩 문제집이 주어진다.
문제를 풀기에 앞서 우선 Python 기초 문법 강의를 수강하고 문제 풀이에 도전하였다. (알고리즘 과목을 선택하여서 인지 추가로 알고리즘 강의가 주어졌는데 이를 2일 차에 확인하였다..!)
문제는 1일차~6일차까지 있고 하루에 2~3개의 문제가 등록되어 있다.
1일 차 문제
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
인데 결론적으로 말하자면 1일 차에 한 문제도 풀지 못했다.
비전공자에 Python 도 처음 공부해봤고 해 본 알고리즘이라곤 별 찍기 정도밖에 없는 사람한텐 당연한 결과일 수도 있다...
21시에 스터디가 끝나고 그 다음 날 오전 7시까지 3문제를 다 도전해 보았지만 제출을 하면 다 오답처리가 되었다.
백준 문제 페이지를 보면 입출력 결과가 예시로 몇 개 나와있는데 여기에 있는 값들만 충족시킨다고 정답 처리가 되는 것이 아니다.
아무리 값을 넣어봐도 정답만 나오는데 왜 틀렸는지를 모르겠어서 해당 문제 질문 게시판에 들어가 글을 몇 개 봐보면 사람들이 찾은 반례들이 있다. 질문을 올린 사람의 코드에 대한 반례긴 하지만 그 값들을 내 코드에 넣어보면 대체로 나에게도 해당되는 반례들이었다ㅋㅋㅋ
여기서 학교 다닐 때 교수님이 하신 말씀이 문득 생각났다.
컴퓨터는 거짓말을 하지 않는다.
99.999% 는 컴퓨터가 하는 말이 맞으니 내 코드를 너무 믿지 말고 얼른 보완을 하는 것이 현명한 것 같다ㅋㅋㅋ
좀만 하면 될 것 같다는 생각에 07시까지 끌고 갔지만 끝끝내 한 문제도 풀지 못하였다.
그래도 코드에 대해서 뭐 하나라도 써보자면...
백준은 입력값을 받는 코드까지 생각해야 하는데 처음에 이걸 몰라서 퍼센트도 안 올라가고 오답 처리가 된 것 같다.
정해진 개수만큼 , (콤마) 로 분류된 값을 입력받을 때
A, B, C = map(int, input().split())
줄바꿈으로 된 여러 값을 입력받을 때
while True:
n = int(input())
if n == 0: #문제의 마지막 입력값
break
를 코드에 추가해주면 백준에서 입력 값을 복사해서 터미널에 붙여넣기 하면 바로 결과 값이 나온다.
(참고 : https://aiday.tistory.com/104)
[Python] 백준, 파이썬 입력받기 (feat.input, split, map)
파이썬 입력받기 프로그래머스는 오롯이 문제에 집중할 수 있고 UI가 깔끔한 반면 백준 온라인 저지 사이트는 문제를 유형별로 묶어서 풀 수 있으며 다양한 장점이 있지만 직접 입출력 처리를
aiday.tistory.com
(1일 차까지 코드 진행 상황)
<2839번>
def sugar(kg):
result = 0
print(result)
sugar(19)
여러 가지 써보다가 지운 상태로 더 이상 진행이 안된다ㅋㅋㅋㅋ
말로는 이해를 하겠는데 이걸 코드로 표현하자니... 너무 막막하다. 수학적인 머리가 떨어진다는 것을 느끼게 되었다.
1일차 3문제 중에 제일 어려운 것 같다...
<4948번>
def findPrimeNumber(num):
count = 0
cnt = 0
if(num == 1):
count = 1;
else:
for i in range(num+1, 2*num+1):
for j in range(2, i):
#print(f'i = {i}, j = {j}')
if(i % j == 0):
break
elif(i % j != 0):
cnt += 1
if(cnt == i-2):
#print(f'cnt = {cnt}')
count += 1
cnt = 0
print(count)
while True:
n = int(input())
if n == 0:
break
findPrimeNumber(n)
처음으로 백준에서 복사한 입력값을 코드에 입력하였다. 그전까진 일일이 다 입력했던...
시간 초과가 떠서 조금 찾아보니 소수 구하는 문제는 대부분 에라토스테네스의 체 알고리즘을 사용해야 하는 것으로 확인하였다.
<2869번>
def goUp(up, down, height):
day = 1
while (up*day - down*(day-1) < height):
day += 1
print(day)
A, B, C = map(int, input().split())
goUp(A, B, C)
반복문으로 돌리니 시간 초과가 떴다.
반복문을 제거하고 일반 수식만 있는 코드로 작성했었는데 계속 반례들이 발견되었고 주먹구구식으로 맞춰서 코드 수정에 수정을 거치다 보니 아침이 되었었다.
주먹구구식은 알고리즘 푸는데 영 맞지 않는 방법인 것 같아서 시간도 늦었고 그냥 내일 하자는 마음에 컴퓨터를 종료하였다.
3번째 문제 같은 경우는 정말 쉬워 보였음에도 불구하고 풀지 못하였는데
마음이 심란하지 않았다면 거짓말이지만 이제 고작 1일 차에 좌절하고 포기하고 싶다는 생각은 전혀 들지 않았고 더 열심히 엉덩이 붙이고 앉아있고 싶은 생각뿐이다.
'개발 ━━━━━ > 항해' 카테고리의 다른 글
[WIL] 항해 본과정 1주차 - 프로그래밍 기초 1, 2 (0) | 2023.08.22 |
---|---|
스타터 노트 (0) | 2023.08.13 |
[개강 준비 과정 - 선택 트랙] 알고리즘 스터디 3일차 (0) | 2023.08.01 |
[개강 준비 과정 - 선택 트랙] 알고리즘 스터디 2일차 (0) | 2023.08.01 |
항해99를 지원하며 (0) | 2023.06.25 |