사용자 도구

사이트 도구


ps:ps_일지

PS 일지

  • PS를 시작한지 한참 되었지만, 뒤늦게 부정기적인 일지를 쓰기 시작한다. 목표는 떨어지는 모티베이션을 다시 높이는 것.

2023/3/28

  • ps환경에 몇가지 큰 변화를 주었다.
  • 먼저 코드 작성에 타입체커를 사용하기로 했다. 우선은 mypy를 사용하기로..
  • 다음으로는 import inliner을 꽤 손봤다. inlining 할때 type annotation을 지워주는 기능을 추가했고, 복사되는 라인에 대한 주석 형식도 바꿨다. 여기서 좀만 더 나아가면 라이브러리 파일에서 태그들을 없애는 것까지도 갈수 있을거 같은데.. 일단 이것만으로도 큰 변화이다 보니 버전을 드디어 v1.0으로 올렸다. 2년이상을 v0.x에서 머물렀었는데.. 드디어 1.0이라니 코드한테 좀 미안한 느낌도 있다 (그런데 코드를 너무 엉망으로 짜놔서 손대기가 싫기는 한다.. 미안 ㅜㅜ)

2023/3/27

  • 원래 계획했던 탈 PS 플랜에 비해서는 많이 늦어졌지만.. 어렵게 클래스 9를 달성했다. 동시에 솔브드의 top 100에서 플래티넘을 모두 몰아내는데에도 성공했다.
  • 아직 다이아 1까지는 5점이 남아있다. 일단 다이아 1을 만들어놓고.. 조금더 내실을 다지는 시간을 갖겠다
    • 어려운 알고리즘을 새로 공부해서 클10 문제에 도전하기 이전에, 기초 알고리즘을 마저 공부하고 클6++, 클7++ 을 먼저 달성하는쪽으로 방향을 잡을 계획.
  • 근데 이래갖고 ps탈출은 언제하누.. 상반기에 클10과 클9++을 찍는 계획이었던거 같은데..

2022/12/08

  • 2~3일전에 BOJ의 파이썬 버전이 3.11로 업데이트되었다. 보통 예년에는 새 버전이 1월쯤에 BOJ에 적용되곤 했는데 올해는 좀 빨랐다.
  • 그리고 정말로 속도가 빨라졌다. 일단 미니멈한 기본 코드의 실행속도가 68ms정도 였는데, 이것이 32~36ms정도로 두배가량 단축되었다. 그리고 우선 그냥 보이는대로 최근에 넣었던 코드들을 재제출 해본 결과, 13896은 동일한 코드의 실행속도가 3236ms에서 2496ms로 단축되었다. 반면 도로 네트워크은 2576ms에서 2388ms로 그다지 차이가 없었다.
  • 3.11에서 어떤 부분이 더 빨라졌는지 대해서는 설명이 있었기는 하지만, 실제로 BOJ에서 테스트해볼 필요가 있을거 같다
  • 그와 더불어 여태까지 속도에 대한 기록은 더이상 의미가 없어질것 같기도 하다.. 3.10이하로 제출했던 코드랑 3.11에서 제출했던 코드를 분리하기 전에는 1등기록 이런거는 의미가 없을것 같고. 나도 라이브러리 만들면서 속도를 벤치마크했던 내용들을 다 없애든가 다 업데이트하든가 어떻게든 처리해야할듯.

2022/11/30

  • 엄청 오랫만에 추가한다. 그동안 여러가지 일들이 있었지만 하나도 안올리고 있었네..
  • 2022년을 1달 남기고서 올해를 어떻게 정리할까 대충 고민해봤다.
  • 2022년 동안 한 PS를 대충 요약하면
    • 스트릭 유지 성공
      • 아이템을 3~4개 썼지만 깨지지는 않았고. 492일 연속 기록으로 최장스트릭 33등.
    • 푼 문제수도 꾸준히 우상향.
      • 1월1일에 773문제 → 현재 1446문제
    • 하지만 AC rating은 거의 진전이 없음
      • 1월1일에 2401로 D3진입. 이후 계속 D3에 머물다가 11월에야 D2상승. 현재 2510점
      • 랭킹도 251등→240등으로 1년동안 거의 변화 없음
    • 새로 공부한 알고리즘들? 스프라그-그런디, SCC, 2-sat, … 음.. 별로 안떠오른다. 실제로 별로 없는듯
  • 정리하면.. 푼 문제수가 늘었으니 뭔가 시간을 나름 들이기는 했는데, 가시적인 업적은 없다.
  • 오히려 시간을 PS에 너무 많이 빼앗긴게 문제.. PS때문에 메인이 되어야 할 게임도 별로 못하고 만화책도 별로 못봤다.
  • 그래서. 이제 과감하게 탈PS를 고민해야 할 시점이 왔다. 내년에는 좀더 생산적인 취미를 하는편이 나을것 같다.
  • 그냥 PS를 접기는 그렇고, 해놓은 것들을 일단 마무리는 해야겠다. 마무리용 업적을 생각해본것은 이정도인데..
    • 단계별로 풀어보기 all solve
      • 문제수로는 30문제정도? 하지만 알고리즘 공부가 필요하긴 하다. (난이도 중)
    • 클래스 all solve
      • 10++을 목표한다면 남은 문제수도 150문제정도. 알고리즘 공부도 당연히 필요. 9++이나 10정도로 타협할수도 있겠지만.. (난이도 상)
      • 일단 하루에 1문제씩은 푼다고 생각해도 5개월은 걸린다. 하루에 1문제씩 풀자.
    • 웰논 알고리즘 모두 공부
      • 단계별/클래스를 공부하다보면 자동적으로 될듯 (난이도 중)
      • 대충 15~20개 정도로 생각하자. 1주일에 한개씩 공부하면 4~5개월 걸릴듯.
    • 루비 달성
      • 클래스 10++을 찍으면 자동적으로 되지 않을까? (난이도 중)
    • 스트릭 유지
      • 이거야 뭐 쉽지.. (난이도 상)
  • 대충 내년 상반기까지 저 업적을 마무리하는걸로 하자. 만만치는 않을듯.. 이제는 진짜 1~2시간 생각해도 안풀리는 문제는 과감히 해답을 보는 용기가 필요할거 같다.
  • 저거를 목표대로 상반기에 달성하고 나면, 그 다음에는 위키좀 잘 정리해서 외부에 공유도 좀 하고. 그리고는 하반기에는 진짜 탈 PS 생활을 한다
    • 탈PS라고 백준을 하나도 안하는건 아니고.. 스트릭은 유지하고. 새로 올라오는 대회문제정도?를 한 셋씩 풀어보는 정도가 괜찮을거 같다
  • 내년에는 덕후같이 PS만 하지 말고, 게임도 하고 만화책도 보고 문화적으로 풍족한 생활을 해보자!!
  • 이 계획 (매일 클래스문제 한개, 매주 알고리즘 한개)은 내년까지 기다렸다 시작할 필요 없고, 오늘 바로 시작하자.
    • PS 탈출 체크리스트에 데일리로 기록해보고, 잘 진행되는지 12월 말에 한번 1차 점검을 해보자.

2022/07/15

  • 모비스에서 아이패드가 도착했다. 처리가 빠릿빠릿해서 좋다.
  • 32gb인지 256gb인지 원래 안적혀있어서 궁금했는데 256gb여서 기분이 좋았다. 가격차이가 20만원 가까이 났던걸로 기억
  • 허접 회사들은 경품줄때 재세공과금을 본인부담으로 처리하는 경우도 봤었는데, 얘네는 그런짓은 하지 않았다. 다 지네가 처리해준다고 한다
  • 개봉해본 아이패드는 너무 가벼워서 약간 놀랄정도였다
  • 암튼 상품 전달 부분은 너무 스무스하게 잘 처리됐고, 전체적으로 테스트 외적인 부분에서는 나무랄곳이 없는 진행이었다.

2022/07/05

  • 모비스 대회 예선 결과가 나왔다. 통과 확률을 50% 정도로 보고 있었는데 생각보다 여유롭게 통과했다..
    • 몰랐었는데 부분점수라는게 존재했다. 이럴줄 알았으면 5번을 O(2^n)방법으로라도 제출해볼걸
    • 그래도 1~4번은 다행히 만점을 받았고, 순위는 17등이었다.
      • 동점자 5명중에서 1등이다. 늦게 탈주했다고 후회했는데 그게 빠른편이었나보다

  • 구글 클라우드 셸이 또다시 quota를 다 썼다고 접속이 안된다… 문제가 있다…

2022/04/28

  • PyRival 이라는 라이브러리를 발견했다. python으로 PS/CP를 하기 위한 목적으로 만들어진 것이고, 코드포스에서 활동하는 사람들이 만든것 같다. 몇개 훑어보는데 재미난 테크닉들도 많아서.. 좀 보고 나서 따로 정리를 좀 해봐야겠다.

2022/04/22

  • 파라메트릭 서치를 따로 구현 안하고 내장 bisect 모듈을 사용해서 처리할수 있는 방법을 떠올렸다. bisect_모듈을_이용한_파라메트릭_서치_구현에 정리했다. 일단 자축!!
  • 이것까지는 좋았는데.. 그래서 라이브러리를 업데이트 하다가 충격적인 사실을 알게 되었다.
    • 아래 두 코드는 거의 동일한데 시간은 100ms vs 180ms으로 차이가 난다
    • 시간이 걸리는 부분은 어이없게도.. 함수 인자 is_valid에 Callable[[int], bool] 이라는 타입 어노테이션을 붙여주기 위해 typing에서 Callable을 임포트해오는 부분이다. from typing import Callable 이 줄의 존재여부에 따라 80ms가량이 차이난다.
    • 관련해서 속도 최적화 vs 예쁜 코드에 내용을 추가했다. 결론은 typing이 아닌 collections.abc에서 import하는것.

2022/04/15

  • 최근들어 클라우드 셸 에디터가 많이 느려진것 같다는 느낌이 든다. 전에도 빠르지는 않았지만 이정도는 아니었는데.. 점점 느려지더니 이제 내가 참을수 있는 임계점에 가까워진듯 하다. 만약 또다시 옮긴다면 어디로 가야하나 ㅜㅜ. GitPod가 구글 클라우드 쉘과 똑같이 Theia를 지원하는것 같기는 한데…

2022/02/25

  • 여태까지는 문제를 풀고 풀이를 올릴때 바로 정해만을 올리곤 했다. 하지만 문득, 내가 이 문제에서 어떻게 정해에 도착했는지.. 보자마자 떠올랐는지 한참 생각했는지 다른데서 힌트를 봤는지 등등을 같이 올리는 것이 내가 복습할때나 다른사람이 볼때나 모두 좀더 도움이 될수도 있을것 같다는 생각이 들었다. 그래서 이제부터는 그런식으로 작성해볼 예정이다.
    • 발상에 걸린 시간과 구현에 걸린 시간을 기록해보고 싶다.
      • 발상 : 보자마자 떠오름 / 몇분 안에 떠오름 / 몇십분 후 떠오름 / 몇시간동안 안떠오름 - 풀이 보고 해결
      • 구현 : 바로 구현 / 몇분 걸려 구현 / 몇십분 걸려 구현 / 1시간 이상 걸려 구현

2022/02/23

  • 문제번호를 입력하면 백준 사이트에서 문제 제목과 테스트 케이스를 긁어와서 코드 스켈레톤을 만들어주던 스크립트인 create_boj가 동작하지 않기 시작했다. 이유는 urllib.open이 403 forbidden을 리턴하는 것. 백준에서 파이썬 크롤러를 막은것같다. user-agent를 일반 브라우저로 바꿔서 돌리니까 다행히 다시 동작했다.

2022/01/07

  • 드디어 백준에 python 3.10이 업데이트되었다. 더불어 pypy도 python3.8과 compatible 한 버전으로 업데이트되었다. 만세

2021/12/31

  • 몇달째 잘 그려오던 잔디 그림을 망쳤다
  • 오늘은 2문제를 풀어야 하는 날이었고, 동시에 goodbye boj 2021 컨테스트에 참여해서 1문제 이상을 풀어야 하는 날이었다.
  • 진행상황은 다음과 같았다
    • 컨테스트에서 한문제를 풀자 잔디가 심어졌는데, 색깔은 1문제를 풀었을때 생기는 색깔이고 메시지는 '스트릭 프리즈' 로 떴다
    • 컨테스트에서 두번째 문제를 풀었지만, 잔디에는 변화가 없었다.
    • 일반 문제를 하나 풀었다. 잔디 색깔은 그대로고 메시지가 '1문제' 로 바뀌었다
    • 일반 문제를 한개 더 풀었다. 잔디 색깔은 2문제를 풀었을때 생기는 색깔이고, 메시지는 '2문제'로 바뀌었다.
  • 일반 문제와 컨테스트 문제를 같이 풀면, 컨테스트에서 푼 문제는 노카운트된다는 결론을 얻었다. 일반 문제를 안풀었다면, 컨테스트 문제를 푼 문제수에 관계 없이 그냥 가장 연한 잔디색으로 칠해진다는 결론도 함께 얻었다.
  • (!)하지만 컨테스트가 끝나자, 잔디 색깔과 메세지가 '4문제'로 바뀌었다.. 컨테스트 도중에만 노카운트고 끝나면 함께 카운트되나보다 ㅜㅜ 그바람에 2문제나 더 풀게 되어서 그림이 망가졌다..ㅜㅜ
  • 뒤늦게 정확한 규칙을 알았다
    • '스트릭 프리즈'가 뜬것은 그날만 적용되었던 예외상황이다.
    • 컨테스트에서 문제를 푸는 순간에는 솔브드에 카운트가 안된다.
    • 컨테스트에서 풀었던 문제가 정식 문제로 추가되는 순간에 솔브드 잔디에 적용된다.
    • 컨테스트 문제가 정식 문제로 추가되는 시점은, 당일일수도 있고 다음날이 될수도 있다.

2021/10/16

2021/10/02

  • LeetCode에서 매일 한문제씩 한달동안 풀면 뭔가를 주는 챌린지가 있다는 소식을 들었다. 그래서 10월부터 참여해볼 마음으로 9월 말부터 연습겸 풀어보고 있었는데, 정작 10월 시작하자마자 문제 푸는것을 놓쳐버렸다. 9월달이랑 챌린지 메뉴 위치가 바뀌어서.. 아직 시작 안한줄 알고 그냥 넘어가버렸다 ㅜㅜ… 그냥 11월부터 시도해보기로..

2021/09/26

  • 페북 해커컵 2라운드.
  • QR과 R1은 시간이 각각 72시간, 24시간이라서 편하게 칠수 있었지만, R2부터는 지정된 3시간 동안에 풀어야 한다. 새벽 2시 시작이라서 풀로 참가하면 새벽 5시에 끝나는 스케줄이지만.. 어차피 목표는 1문제만 풀고서 티셔츠를 받는것이기 때문에 3시간을 풀로 참가할 생각은 전혀 없었다. 원래의 계획은 2시부터 시작해서 3시 이전에 1문제를 풀어 내고 자는것.
  • 그러나 계획과는 좀 어긋나기 시작했는데, 원래 계획대로라면 2시 전에 클리어를 했어야 할 게임을 중간에 막히는 바람에 계속 하고 있었다.. 2시가 넘어서도 계속 하고 있었지만 클리어는 실패하고 2시반쯤에 게임을 중단하고 그제서야 문제를 보기 시작했다.
  • 자연스럽게 A번 문제를 먼저 봤는데.. 생각이 잘 안떠올랐다;; B번..을 읽으려다가 C번이 C1과 C2로 나누어져 있는 문제라는 것을 발견했다. 이런 경우에 C1만 푸는것을 목표로 하면 쉽게 풀렸던 경험이 있어서 C1을 먼저 풀기로 했다.
  • C1은 대충 아이디어는 떠오르는데 디테일은 코딩하면서 채워나가야 할것 같았다. 그리고 코드를 완성시키는데 거의 한시간이 걸렸다 ㅜㅜ. 그냥 1-based로 배열을 채웠으면 쉬울것을 괜히 0-based로 바꿔서 저장하다가 오프셋 처리하는데에 실수를 반복해서 시간을 많이 날렸다. 그나마 샘플 테케가 자세하게 주어진 편이라서 수많은 실수들을 다 잡아낼수 있었다.
  • 여차저차 C1을 제출하긴 했는데 그때의 순위가 1500등 근방이었다.. 티셔츠를 받으려면 1문제 이상 푸는 것 외에도 2000등 안에 드는 조건이 필요한데. 여기서 자면 남은시간동안 2000등 이하로 밀릴수도 있겠다는 불안감이 생겼다.
  • 졸림을 견디면서 A을 다시 읽어보았다. 신기하게도 이번에는 곧바로 솔루션이 떠올랐다.. 그래서 A까지 풀기로 했다. 여차저차 제출하고 나니 600등대였다. 생각보다 높아서 B까지 풀어볼까 하는 생각을 1초 했지만, 어차피 R3에 진출해도 참가할 생각이 없었으므로 여기서는 빨리 자는것이 당연한 선택.
  • 다음날 일어나서 확인해보니 최종 순위는 1247등. 티셔츠를 받는데에는 성공했다.
  • C1만 푼 사람들중 가장 낮은 등수는 1826등. C1만 풀고 잤어도 티셔츠는 받을수 있었다. 그러나 A만 풀고 잤다면 페널티로 커트라인이 갈렸을을 상황이었고, 나는 30분 놀다가 시작했기때문에 힘들었을것 같다. 그리고 R3진출을 위한 500등 커트라인은 A+B+C1을 빠르게 풀기였다. B를 시도는 해볼걸 그랬나.. 뭐 딱히 아쉽지는 않지만. 그리고 이제서야 B번 문제를 읽어보는데 해석이 엄청 안됐다.. 그냥 안풀길 잘했다..
  • 업솔빙..을 해보기는 해야 하려나.. 그러자니 QR부터 밀려있는데;; 여유가 있을지 모르겠다 ㅡㅜ

2021/09/25

  • 모비스 코테에서 상장이 왔다.
  • 50등까지 뽑는 예선을 통과하고, 본선은 참가도 안했으니까 사실상 50등일텐데.. 상장에는 5등상 이라는 의미로 5등 이라고 적혀있으니 기분이 묘했다. 그나저나 상장이라니.. 학교를 졸업한 이후로 처음 아닌가? ㅋㅋ

2021/09/17

  • 이번주부터 Google Clould Shell로 코딩 환경을 옮겼다. 가장 처음에는 C9을 사용하고 있었고, C9이 유료화되어서 구름IDE로 이사와서 1년가량 사용하고 있었다. 구름IDE에서는 대체적으로 크게 불편한 점 없이 사용하고 있었지만, 가끔씩 파일 저장이 안되는 에러가 생기는 것이 거슬리곤 했다. 그런 상황이 생기면 보통 하루정도 지나서 알아서 고쳐지길래, 짜증은 나도 그냥 참고 그날은 코딩을 접는 식으로 해왔었다. 하지만 지난 주말 새벽에, 페이스북 해커컵 1R 마감에 맞춰서 문제를 풀려고 접속했는데 또 그 현상이 나타나자 더이상 참지 못하고 다른 곳으로 옮기기로 결심했다. (해커컵은 repl에서 코딩해서 제출 겨우 컷 점수만 맞췄다)
  • 그 사이에 기술이 발전되어서, 요즘에는 VS code를 웹에서 접속할 수 있는 Theia 라는 프로젝트가 있다고 한다. 자기 서버에 설치해서 서버를 열어놓고 접속해서 써도 되긴 하지만, 당연하게도 Theia가 설치되어 있는 상태로 서버를 쓸수 있는 서비스들도 여럿 있다. Google Clould Shell도 그런 서비스. 공짜이고 서비스 내용도 심플하다. 사실 그냥 PS용 코딩만 하면 되니 어차피 많은 기능이 필요하지도 않다. 일주일에 50시간밖에 못쓴다는 제약이 있는데, 그만큼이나 코딩을 할 일은 없으니 상관 없다.
  • 처음 접하는 VS code 환경을 세팅하는데에는 시간이 좀 걸렸다. pyenv로 python 3.9를 설치했는데, 그 설정을 적용하는데 좀 애를 먹었다. 그 외에도 여러모로 적응하는 중이기는 한데, 생각보다 금방 적응하고 있다. 구름은 이제 안녕.

토론

댓글을 입력하세요:
O A K K V
 
ps/ps_일지.txt · 마지막으로 수정됨: 2023/03/29 01:42 저자 teferi