23289: 온풍기 안녕!문제에서 안내한대로 구현해주면 된다이 문제에선 벽을 어떻게 효과적으로 판별해줄지가 포인트였다wall = \[set() for c in range(C) for r in range(R)] 형식의 set을 원소로 갖는 2차원 list를 이용했다. s
9466: 텀 프로젝트시간초과를 극복하기가 어려웠다 (pypy3은 메모리초과, python3으로 setrecursionlimit(10\*\*6) 설정해서 통과함)team list를 이용해서 해결했다일단, visit list는 반복문 밖에 한 번만 선언해줘도 된다team
length: array의 길이 (arr.length)length(): String related object (str.length())size(): Collections object (list.size())
4179: 불!고려해야할 코너 케이스가 몇 가지 있었다1) 지훈이가 1초만에 통과할 수 있는 경우2) 처음에 지훈이와 불은 여러 군데 존재할 수 있다도착점은 따로 ex에 넣어서 처리해주었다bfs를 두번 탐색해서 해결해주었다먼저, 불이 번지는 경우를 bfs로 처리해주고
12851: 숨바꼭질 2 가장 빠른 시간이 몇 초 후인지와, 가장 빠른 시간으로 찾는 방법이 몇 가지인지를 구해야하기 때문에 queue에 노드를 추가할 때 조건문을 조금 신경써줘야 한다
19237: 어른 상어간만에 풀어보는 삼성 구현문제/ 문제에서 안내한 대로 구현해주면 된다. 딱히 코너 케이스도 없다구현 순서는 아래와 같이 해야한다인접한 칸으로 이동하는 과정 (아무 냄새가 없는 칸으로, 여러 개면 우선순위에 따라서 이동/ 아무 냄새가 없는 칸이 없으
1240: 노드사이의 거리dfs 탐색하면서 구하고자하는 cost를 구해주면 된다재귀 종료조건: node == dest일 때 global_cost를 update 해주고 return중복 노드를 제거해주지 않으면 무한 재귀 호출을 할 수 있기 때문에 visit 1차원 lis
1068: 트리주어진 트리에서 삭제하고자 하는 노드를 삭제한 후에 리프 노드의 개수를 출력하는 문제tree는 parent라는 이름의 list를 이용했다index: 자신의 노드, parentindex: 부모 노드dfs를 통해 parent의 값을 'False'로 변경해주어
LV 3: 부대복귀destination에서 각 source로 가는 방향으로 bfs를 수행해주었다양방향 그래프를 생성하기 위해 edges라는 이름의 dictionary를 이용했다중복 방문 노드 제거를 위해 visit이라는 이름의 set을 이용했다
17070: 파이프 옮기기 13차원 dp table을 이용해 풀어주었다dpi0는 가로 파이프 놓는 경우의 수, dpi1은 세로 파이프 놓는 경우의 수, dpi2는 대각선 파이프 놓는 경우의 수기저: 0행먼저 순회하면서 board0의 값이 0이라면 dp00 = dp00으
2565: 전깃줄DP로 어떻게든 풀어보려고 애를 썼다일단 line을 A 기준 오름차순으로 정렬해줘야한다그 후, 2중 for문을 돌면서 dp table을 갱신해줘야한다outer for loop을 아래에 있는 전깃줄, inner for loop을 위에 있는 전깃줄로 잡았을
LV 2: 괄호 회전하기stack을 이용하는 무난한 구현문제이다list 회전은 그냥 deque의 rotate 메소드를 사용했다 (반시계방향: .rotate(-1))처음에 TC 13번에서 통과가 되지 않았는데, 마지막에 stack이 비어있는 지를 확인해줘야했다
LV 2: 방문 길이문제에서 안내한대로 구현해주면 된다d라는 dictionary를 이용해 각 명령어 'U', 'D', 'R', 'L'를 해당하는 변위값으로 바로 변환할 수 있게 해주었다visit라는 set을 이용해 해당 길이 처음 걸어본 길인지 아닌지를 판별해주었다이
LV 2: H-IndexH-Index에 대한 설명이 이해하기 좀 머리아팠는데,그냥 citations의 최댓값( = H-Index의 후보중 최댓값)부터 0까지 역순으로 for문을 돌면서, h값이 H-Index의 조건을 만족하는 지 확인해주면 된다. 만족한다면 역
LV 2: 스킬트리문제에서 안내한대로 구현해주면 된다step_set (set type)을 이용해서 검사를 해야할지 안해도 될지를 판단해주었다possible_index를 이용해서 스킬순서에서 몇번째까지 배웠는지를 표시해주었다possible_flag를 이용해서 가능한 스킬
LV 2: 가장 큰 수처음에는 그냥 각 숫자를 list로 변환하고 nums.sort(reverse=True)로 sorting하면 될 줄 알았는데, 3, 0이 3보다 앞에 오는 게 문제였다\-> number가 1,000 이하의 수라는 점을 이용하여 3번 이어 붙인 값의
LV 2: 가장 큰 정사각형 찾기 처음에 좌표를 한 칸씩 이동하면서 backtracking 방식으로 풀어보려 하였으나, row와 column의 크기가 1000이하인 관계로 TLE가 떴다 dp를 이용해서 풀어주었다 row의 크기를 N, c
LV 3: 순위각 노드에서, 자신의 노드를 포함하여 자신을 이긴 노드와 자신에게 진 노드의 개수가 n+1이 된다면 정확하게 순위를 매길 수 있다는 아이디어를 참고했다win_graph는 key - value의 관게가 '이긴 선수 - 진 선수'인 그래프이다lose_grap
LV 2: 전력망을 둘로 나누기brute force + find-union을 이용해서 풀어주었다wires의 길이만큼 for문을 돌면서 현재 위치의 wire를 끊어준다면 송전탑이 트리 형태로 연결되어 있기 때문에, 두 개의 전력망으로 나뉘게 된다전력망을 끊어준 후, 매