본문 바로가기
[WIL]/KRAFTON JUNGLE 2기

[KRAFTON JUNGLE 2기] 01WEEK - WIL

by 이또삐(이민혁) 2023. 5. 14.

01WEEK REVIEW

느낀 점

1주차였기 때문인지, 아니면 0주차가 너무 힘들었던 탓인지는 모르겠지만, 생각보다 여유로웠던 한 주였다. 하루 일정이 매우 타이트하게 느껴지진 않았다. 0주차에 비해 빨래, 운동, 방청소, 필수용품 등 생활에 필요한 것들을 준비할 수 있는 시간이 많았다. 몸도 적응하기 시작해서 그런지, 집중할 수 있는 시간에 집중하고, 그 외의 시간들을 더 효율적으로 활용하는 방법을 찾고 적용했다. 예를 들면, 집중이 어려울 때 밖에서 30분 동안 달리기를 하는 것과 같은 것들이다.

코치님들의 이야기를 종합해보면, 이번 달은 실제로 학습, 즉 알고리즘 공부에 중점이 맞춰져 있어 팀 단위의 강제성이 상대적으로 적은 주들이 될 것 같다. 물론, 그렇다고 해서 공부량이 줄어든 건 아니다. 계속 작성되고 있는 TIL을 보면, 하루 일정 자체는 여전히 내 인생에서 가장 많은 시간을 학습에 투자하고 있다. 어쩌면 나만의 학습법을 찾은 것일 수도 있고, 환경에 적응한 것일 수도 있지만, 지금 정도의 루틴을 유지할 수 있다면 앞으로도 지치지 않고 계속할 수 있을 것 같다.

아쉬웠던 점

가장 아쉬웠던 건, 지금 작성하고 있는 TIL과 WIL과 같은 일지들을 이제서야 알게 되어 작성하게 된 것이다. 실제로 매일 하루를 기록하다 보면, 이렇게 쓰고 있는데도 그 하루 중 놓친 것들이 많다. 알고리즘 구현 중에 했던 생각의 순서들도 기록하고 싶었고, 수많은 트러블 슈팅들을 기록하고 싶었지만, 익숙하지 않아 지나치고 넘어간 것들이 많았다. 이런 기록들이 얼마나 중요한지 이제서야 깨닫게 되었다. 일지를 작성함으로써 기억에 훨씬 더 오래 남고, 활용할 수 있는 기회도 많아진다는 것을 알게 되었다. 또한, 나 스스로를 증명하는 데에도 큰 도움이 된다. 지금까지 GitHub를 통해서 내가 어떤 프로젝트를 진행했는지만 저장해왔었는데, 그보다 더 중요한 것들을 지금까지 놓쳐온 것에 대한 아쉬움이 크다. 그래서 일지를 작성하는 것을 목표로 삼기로 결심했다.

그리고, 알고리즘들에 대해서 얕게 알고 있다고 생각했지만, 모르는 부분들이 많았다. 기초적인 것들도 다시 떠올리는 데 시간이 필요했고, 그래프나 재귀함수와 같은 문제들을 접했을 때 이전에 풀이법들과 생각 전개 방식들을 떠올리기에 더 많은 시간이 필요했다. 물론, 그만큼 떠올린 것들도 내가 공부한 것들이 효과가 있었다고 느꼈지만, 목표로 하는 곳에 도달하기에는 아직 부족한 실력이었다. 4주라는 시간 중 1주가 지났고, 남은 3주 동안 난이도가 높은 문제들을 접하게 된다. 이번 주에 마주했던 트러블슈팅들과 이론들을 일지에 잘 정리하고, 100%에 가까운 완성도를 위해 노력하고 싶다.

또한, 트러블슈팅에 대해서도 다시 한번 정리하고, 더 많은 고민의 흔적들을 남겨두고 싶다! :)

마무리

이번 한 주를 기반으로 앞으로 더 효율적이고 간절한 공부를 해 나가고 싶다. 점점 개선되는 내 모습을 볼 때마다, 이 정도로 할 수 있었나? 라는 의문이 계속 생길 정도로, 이번 한 주의 경험이 강렬했다. 이 느낌 그대로, 이 생각 그대로 나아가고 싶다. 어렵겠지만, 이 글을 보는 4개월 뒤의 나에게 창피하지 않기를 바라며 이번 주의 WIL을 마친다. 파이팅!


TROUBLESHOOTING

1. vscode extension 충돌

vscode상에서 엔터가 아예 안눌러짐. 정말 수많은 해결책들을 적용해 봤던것 같음.

대표적으로

  1. setting.json
  2. key관련.json
  3. keybinding 수정
  4. 컴퓨터 껏다키기
  5. vscode 안전모드 실행 (나중에 알고보니 의미없다는걸 알게되었음)
  6. vscode 초기화 및 재설치

해결책이라기보단… 이 에러가 생기게 된 이유는 mac os를 13.3 버전으로 업그레이드 하면서 vscode 에설치한 extension인 vscode-styled-compenents 과 충돌이 있었던듯 함. https://stackoverflow.com/questions/75896153/cannot-create-line-break-with-enter-key-in-vs-code

실제로 해결한 방법은 vscode extension 초기화 였고, 그동안 쌓인것들을 초기화 했다고 생각하고 지나가기로 했음.

이번기회로 스트레스는 엄청 받았지만 얻은것도 엄청 많았는데,

  1. vscode setting관련해서 겉으로 대충만 알고있던 setting.json, keyboard 관련 설정법, cmd + shift + p 활용법등 IDLE를 좀더 효과적으로 사용할수 있게된것 같음
  2. os업데이트에 대해서 다시한번 생각해 보게 된것같음. 더 찾아봐야 겠지만, mac os 자체에도 호기심이 많이 생겼고, 업데이트는 새로운거 생겼다고 호다닥 가서 해버리는게 마냥 좋은것은 아니라는걸 느꼈음
  3. 이번 문제는 구글링을 통해서 해결했는데, 최근 chatgpt 사용에 익숙해져 이런 실시간 이슈나, 사용 이슈와 같은 적절한 서칭 방법이 있다는걸 다시 한번 상기하게 됐음.

하지만… 정말 너무나도 힘든 경험이였다. 실제로 해야할 과제들을 이 시간동안 아예 시작도 못했기 때문에..

2. 백준 - 종이자르기

분명 20분이 초과되면 알고리즘을 보기로 나 스스로와 약속했는데… 도저히 보고싶지가 않다. 손을 뻗으면 닿을것만 같은거리에서 아른거리고 있다…

0 부터 a 사이에서 wid[i] 에 들어있는 모든 수들에 대해, 각 차이들중 최대값을 구하는 알고리즘을 작성하면 되는것 같은데, 될것같으면서도 안되는… 그런 아주 마음아픈 상황에 직면해 있다.

결국 풀어냈다! 내 혼자만의 힘은 아니고 chatgpt의 선생님과 함께 푼것 같아 찝찝하다. 정말 조금만 더 생각해 내면됐던거같은데.. 결과값은 잘 나오고, 구현도 잘 됐는데 이상하게 제출시 계속 오류가 떠서, 어쩔수없이 검색하게 된것 같다.

이게 내 원래코드고,

import sys
input = sys.stdin.readline

a, b = map(int, input().split())
line = int(input())
wid = [0] * line #가로
leng = [0] * line #세로
max_big = 0

#가로로자르면세로 / 세로로자르면가로
for i in range(line):
    x, y = map(int, input().split())

    if x == 0:
        leng[i] = y
    # else:
    #     wid[i] = y

    if x == 1:
        wid[i] = y

# print(wid)
#가로
wid.sort()
# print(wid)
for i in range(line):
    big = abs(wid[i] - wid[i-1])
    if big > max_big:
        max_big = big
    
max_wid = max(wid)# 배열중 최대값
min_wid = min(wid)# 배열중 최소값
wid_max = max(min_wid,a-max_wid, max_big)
# print(max_big)
# print(wid_max)

# print(leng)
#가로
leng.sort()
for i in range(line):
    big = abs(leng[i] - leng[i-1])
    if big > max_big:
        max_big = big
    
max_leng = max(leng)# 배열중 최대값
min_leng = min(leng)# 배열중 최소값
leng_max = max(min_leng,b-max_leng, max_big)
# print(max_big)
# print(leng_max)

result = wid_max * leng_max

print(result)

이게 수정된 코드다.

import sys
input = sys.stdin.readline

a, b = map(int, input().split())
line = int(input())
wid = [0] * line #가로
leng = [0] * line #세로
max_big = 0

#가로로자르면세로 / 세로로자르면가로
for i in range(line):
    x, y = map(int, input().split())

    if x == 0:
        leng.append(y)
    else:
        wid.append(y)

wid.sort()
wid.append(a)
leng.sort()
leng.append(b)

max_wid = wid[0]
for i in range(1, len(wid)):
    max_wid = max(max_wid, wid[i] - wid[i-1])

max_leng = leng[0]
for i in range(1, len(leng)):
    max_leng = max(max_leng, leng[i] - leng[i-1])

result = max_wid * max_leng
print(result)

일단 이 알고리즘을 풀면서, append에 대한 부분을 완전히 배제한게 시간이 오래걸린 가장 큰 이유라고 생각한다.

append를 활용해서 한 배열에 모든 정보를 집어넣고, 거기에 관한 for문을 돌려 내가 작성한 알고리즘을 구현하면 됐던 문제였다. max함수도 최대한 간소화했더니 코드가 더 깔끔해 졌다.

이상한 고집때문에 결국 2시간 정도를 더 써서 마무리 했지만… 그래도 항상 해맬때마다 배워가는게 많은것 같다. 기억에도 더 잘남고!

마무리 했으니 이제 정리하고 자러갈 시간이다.

'[WIL] > KRAFTON JUNGLE 2기' 카테고리의 다른 글

[KRAFTON JUNGLE 2기] 04WEEK - WIL  (1) 2023.05.14
[KRAFTON JUNGLE 2기] 02WEEK - WIL  (1) 2023.05.14
[KRAFTON JUNGLE 2기] 00WEEK - WIL  (0) 2023.05.14

댓글