99클럽 코테 스터디 12일차 TIL: 3차원 BFS
·
일기장/항해99클럽 4기
오늘의 문제: 7569. 토마토오늘 문제는 그래프의 대표적인 문제인 토마토이다. 토마토가 두 가지 버전이 있는데 그중에 3차원 형식으로 이루어진 문제이다. 3차원에서 그래프 탐색을 해야한다는 게 이 문제의 핵심이다. 확실히 3차원이 되다보니 아이디어가 쉽게 떠오르지 않아서 오늘은 검색 찬스를 쓰게 되었다… 아무래도 일반적인 그래프 탐색 방식이 아니라 그런지 쉽지 않았다. 노드와 간선으로 이루어진 그래프였으면 풀 수 있지 않았을까 싶기도 하다.from collections import dequem,n,h=map(int,input().split())graph=[[[*map(int,input().split())] for i in range(n)] for j in range(h)]visit=[[[-1]*m fo..
10월 24일: 클론폴더 만들어서 실제 개발 진행하기
·
일기장/우아한테크코스 7기
오늘은 빠르게 먼저 개발을 진행해보려 한다. 코드 퀄리티를 떠나서 우선 완성을 해놓고 수정하는게 더 편하다는 생각이 들었다. 처음부터 계획한 설계 내용 따라 작업하려 하니 어려움이 생겼기에 이번에는 먼저 코드부터 짜보려 한다.코드를 짜며 알아낸 사실들함수를 구분해야 한다.생각보다 이번 프리코스에 조건으로 걸려있던 뎁스 관련 조항이 꽤나 크게 작용했다. App.js의 경우 App 클래스를 선언하기 때문에 함수를 호출하는 것 이외의 다른 반복문이나 조건문 등의 작업이 불가능했다.그래서 꽤나 함수로 많이 쪼개야 한다는 생각이 들었다. 우선 지금은 이걸 신경 안쓰고 짜려고 한다.파일과 폴더도 구분해야 한다.가장 고민되는 부분은 아무래도 파일들 이름과 폴더들 이름이다. 단순히 저번처럼 functions 같은 멋없..
99클럽 코테 스터디 11일차 TIL: 골드 너비 우선 탐색
·
일기장/항해99클럽 4기
오늘의 문제: 25195. Yes or yes오늘 문제는 보자마자 큰일 났다는 생각이 제일 먼저 들었다. 그래프 관련된 문제 중 골드4면 꽤나 어려울 거라 생각해서 약간 시간을 잡아먹겠다는 생각이 들었다. 그래봤자 크게 어렵지 않겠지라는 생각으로 우선 풀어봤다.아이디어: 곰곰이를 만나지 않고 종료되면 틀리지 않을까.그래프 탐색을 종료하는 방법에 대해서 생각을 해봤을 때, (1) 곰곰이를 만나게 되면 그 경로는 앞으로 검사하지 않는다. (2) 곰곰이를 만나지 않고 경로 탐색이 종료될 경우 답은 yes가 된다.라는 대원칙을 가지고 시작해보려 한다.from collections import dequeimport sysinput=sys.stdin.readlinen,m=map(int,input().split())..
10월 23일: 기능 정리 및 README.md
·
일기장/우아한테크코스 7기
오늘은 드디어 프리코스 시작 이후 처음으로 TIL이 밀린 날이다. 다음날 새벽에 쓰게 되나니… 아무래도 1주차가 끝나고 조금 풀어진 듯하다. 빠르게 기능 정리하고 리드미 초안까지 작성하고 자려고 한다.실패했다. 내일 조금 많이하더라도 오늘은 일찍 자는걸로…기능 정리입출력 형식readLineAsync()로 “경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)”라는 쿼리를 입력함.입력하는 값은 ,로 구분된 이름 문자열.이름은 최대 5자까지, 최대 5개까지 존재할 수 있음.readLineAsync()로 “시도할 횟수는 몇 회인가요?”라는 쿼리를 입력함.입력하는 값은 진행 횟수를 뜻하는 숫자 하나.
99클럽 코테 스터디 10일차 TIL: 다익스트라
·
일기장/항해99클럽 4기
오늘의 문제: 18352. 특정 거리의 도시 찾기오늘 문제는 언뜻 보기에 다익스트라 문제이다. 하지만 이 문제가 실버2인 이유가 있지 않을까 하고 바라보니 단순 BFS로 풀어도 문제가 없지 않을까 하는 생각이 먼저 들어서 BFS로 접근해보기로 했다.아이디어: BFS로 풀 수 있지 않을까from collections import dequen,m,k,x=map(int,input().split())graph=[[] for i in range(n+1)]visit=[-1 for i in range(n+1)]for i in range(m): a,b=map(int,input().split()) graph[a].append(b)def bfs(graph, start): deq=deque() idx=..
99클럽 코테 스터디 9일차 TIL: 재귀 함수로 구현하는 그래프
·
일기장/항해99클럽 4기
오늘의 문제 | 7562. 나이트의 이동오늘 문제는 짧지만, 난이도는 확실히 있어보인다. 머리로 생각하기 보단 코드를 짜기가 어렵지 않을까하는 생각이 든다. 우선 생각없이 코드 구조부터 구성해봤다.오늘은 확실히 아이디어가 쉽게 떠오르지 않는다. 단순히 BFS로 하자니 경우의 수가 너무 많아지고, 줄이자니 예외가 너무 많을 것처럼 느껴졌다. 확실히 실버1로 올라가니 체감 난이도가 오르긴 했다. 무지성으로 BFS를 짜보면 뭐라도 나오지 않을까.아이디어: 미리 갈 수 있는 모든 곳까지의 거리를 계산해놓자.사실 숫자가 그리 크지 않고, 체스판이 그리 크지 않기에 이론상 가능할 것이라 생각했다. 나이트가 움직일 수 있는 방법을 미리 리스트로 만들고, zip을 통해 새로운 위치에 대해 계속해서 체크하는 방식으로 했..
10월 22일: 2주차 프리코스 알아보고 기능 정리하기
·
일기장/우아한테크코스 7기
1주차가 마무리되고, 오늘 또 2주차 프리코스가 올라왔다. 2주차 프리코스와 함께 1주차 공통 피드백도 함께 올라왔다. 이번에는 기능 관련해서 최대한 빠르게 정리하고, 개발을 우선적으로 진행해보려 한다. 시간이 되면 1주차 공통 피드백 내용에 있는 것들도 정리해봄직 하다.둘러보기: 내가 해야할 것들 정리하기회고이번에 따로 중간 회고를 작성하여 제출해야 한다. 아마도 2주차 제출할 때 소감 작성하는 란에 함께 적어야 하는 듯하다. 회고에 써야하는 내용은 다음과 같다.지원서에 작성한 목표를 얼마나 달성하고 있다고 생각하나요? 그 이유는 무엇인가요?지원서에 작성한 목표를 변경해야 한다고 생각하시나요? 그렇다면 그 이유와 어떤 목표로 변경하고 싶으신가요?프리코스를 진행하면서 눈에 띄는 변화나 깨달은 점이 있나요..
99클럽 코테 스터디 8일차 TIL: 그래프 탐색 및 DP
·
일기장/항해99클럽 4기
오늘의 문제 | 2644. 촌수계산문제를 보자마자 그래프 문제라는건 바로 알 수 있다. 그래서 입력 부분부터 코드짜고 생각해보니, 로직이 떠오르게 되었다.아이디어: DP로 해결할 수 있지 않을까물론 이걸 DP라 해야할지 전처리 과정이라 해야할지 모르겠지만, 우선 n이 크지 않기 때문에 이론상 시작하기 전 루트를 기준으로 촌수를 구하고 해당 촌수들만 빼면 어떨까 했었다.사실 이게 가능한게 부모가 최대 한 명이라는 점에서 크게 문제가 없지 않을까 생각했었다. 하지만 촌수를 계산 하는건 꽤나 복잡한 과정이기이 전처리로 문제를 해결 할 수 없었다.아이디어: 문제를 복잡하게 생각하지 말자생각보다 문제가 단순하지 않을까 생각했다. 어차피 결혼 관계가 없기 때문에 부모자식 간 1촌, 즉 거리만 계산하면 되는 것이다...