💡 문제 해결 방문 여부를 확인하기 위한 리스트 생성 복구 시간을 저장하기 위한 리스트 생성 bfs 탐색 중 출발지로 돌아가는 경우 제외 처음 방문하는 곳이면 (현재까지의 시간 + 탐색 방향의 시간) 지정 후 stack에 추가 이미 방문했던 곳이라면 이미 할당된 값과
목적지로 가는 시작점을 찾는 문제이기 때문에 목적지를 시작점으로 지정다시 되돌아가는 경우를 제외하기 위해 방문리스트 생성x축의 index가 0이 될 때까지 반복왼쪽이나 오른쪽으로 움직일 수 있다면 이동양 쪽 모두 갈 수 없다면 위로 한 칸 이동📌 처음에 while문으
각 노드에 대한 정보를 받아 딕셔너리에 저장 시작점은 루트 노드인 1부터 시작하므로 1부터 탐색 숫자 노드와 연산자를 포함한 노드를 구분하며 탐색 만약 숫자 노드이면 정수 형태로 return, 연산자 포함 노드이면 연결 된 노드의 정보를 다시 호출하여 연산 재귀의 형태
setdefault메소드를 활용해 노드간의 연결 설정방문 여부와 depth를 확인하기 위한 visited 리스트 생성1번노드를 시작으로 가까운 거리의 노드들부터 탐색연결된 노드들의 depth를 visited에 저장visited 리스트 중 최대값을 가지는 수의 count
최초에 출발의 방 번호는 가장 큰 수로 설정하고, 이동할 수 있는 방의 개수는 최소로 설정모든 방 하나하나에 대해 탐색stack을 통해 4방탐색하여 자신의 방보다 1크면 stack에 추가탐색을 마친 후 방 번호와 이동할 수 있는 방의 개수를 비교📌 시간초과가 날 줄
while문을 통해 반복실행배열 안에 2x2의 같은 블록이 존재하는지 탐색만약 존재 한다면 좌표를 returnreturn한 값이 존재한다면 해당 위치의 블럭의 값을 0으로 변환0으로 변환한 블럭들을 밑으로 이동하고 배열을 갱신더 이상 사라질 블록이 없을 때까지 반복문제
먼저 1씩 증가하는 행렬을 생성 쿼리문의 값을 받아 테두리를 한칸씩 밀어내는 식으로 구현 한 칸씩 밀어내면서 리스트 안에 값을 누적 테두리를 회전시킨 뒤 누적된 리스트 안의 값 중 최소값을 `return` `return`된 최소값을
str으로 된 숫자를 int형으로 바꿔주며 수식을 저장하며, 동시에 연산자를 따로 저장연산자를 저장한 리스트를 permutations을 통해 우선순위 선정우선순위를 선정한 permutations 리스트를 반복문을 통해 실행우선순위에 따라 해당 연산자의 계산을 우선적으로
dictionary에 dial에 대한 위치값을 키패드: 좌표값의 형태로 저장 왼손 엄지와 오른손의 엄지의 위치를 저장 번호 배열에 따라 손가락 위치를 바꿔가며 저장 1, 4, 7은 왼손, 3, 6, 9는 오른손으로 저장 2, 5, 8, 0은 양손가락 중 가까운 위치의
규칙에 맞게 바꾼 아이디를 저장할 리스트를 생성 특수문자로 사용될 수 있는 값을 spe에 저장 반복문을 통해 아이디 문자열을 받아 생성 조건에 맞게 변환하여 new_lst에 저장 반복문이 끝난 뒤 체크할 조건에 부합하는 경우를 확인 조건에 맞게 변환 뒤 jo
key를 회전시키는 함수를 구현 후 4번의 방향으로 돌리는 반복문 실행회전 시킨 키의 돌기(1) 위치 좌표와 자물쇠의 홈(0) 위치 좌표를 저장만약 자물쇠에 홈이 존재하지 않는다면 return값을 True로 반환그렇지 않다면 자물쇠의 홈이 있는 공간마다 열쇠의 돌기부분
초기 돌의 위치를 셋팅순차적인 플레이를 반복문을 통해 실행보드 위에 돌을 두고 8방향을 탐색탐색하는 방향에 색이 다른 돌이 존재한다면 while문을 통해 끝점을 탐색탐색하는 도중 이동하는 좌표를 리스트에 저장탐색 도중 판의 범위를 넘어서면 그대로 return탐색하는 방
입력받은 문자열의 idx와 각 차례를 나타내는 idx를 따로 설정반복문을 통해 문자열의 idx를 이동만약 해당 idx가 숫자라면 숫자임을 나타내는 idx를 설정하여 숫자가 끝날때까지 반복문 실행숫자가 끝나면 영역 당첨에 대한 점수를 계산하여 점수 리스트에 저장숫자가 아
각 방의 정보를 담기 위한 리스트 생성2진수로 전환 뒤 암호의 길이를 맞춰 리스트에 삽입두개의 방의 정보를 읽으며 만약 벽이 한 곳에라도 존재한다면 벽을 생성그렇지 않은경우 빈공간을 넣어 정답을 나타내는 배열에 삽입📌 2진수로 변환 뒤 암호의 길이를 맞춰주는 과정에서
티켓을 정렬시킨 뒤 dict에 저장출발지를 "ICN"으로 설정 후 출발현재 위치에서 이동이 가능한 공항을 뽑아낸 뒤 재귀적으로 호출깊이 우선 탐색을 활용하여 더이상 이동할 수 없을 시 마지막 위치의 공항부터 정답리스트에 추가출력은 저장한 리스트의 역순으로 출력하여 순차
전체 보석개수와 보석 종류를 저장 탐색할 구간의 두 종류(시작점과 끝점)의 탐색점을 idx 0으로 지정 선택한 보석의 종류와 개수를 나타낼 dict 선언 모든 종류의 보석을 포함하고 있다면 가장 짧은 길이인지 확인 탐색하는 구간의 시작점을 한 칸 이동 모든 종류의 보석
각 움직임에 대한 회전 수를 지정 숫자를 이동하기 전 움직임의 기준을 둔 방향으로 회전(이 경우에서는 위쪽으로 합침) 기준방향으로 회전 뒤 먼저 0을 제외하고 상단으로 정렬 위 방향부터 숫자 합치기 시작 계산이 끝난 뒤 다시 0을 제외한 값을 상단으로 정렬
주어진 가로수들간의 거리 차를 리스트에 저장가로수간의 최대공약수를 구하기 위해 리스트의 가장 첫 값을 저장index 1부터 반복문을 실행하여 min_length와 간격차의 최대공약수를 gcd함수를 통해 탐색가로수 간의 거리차 사이에 구해진 최대공약수를 나눠 사이에 들어
0으로 초기화된 K+1크기의 리스트 생성리스트의 0번째 index를 1로 설정코인의 금액에 따라 반복문 실행해당 코인보다 낮은 금액의 코인들을 사용했을 경우의 수로 dp리스트를 갱신dp리스트의 N번째 index값은 N원을 만들 수 있는 경우의 수📌 dp리스트의 0번째
dp리스트에 주어진 숫자에 대한 기본값을 저장0 index를 제외한 1 index부터 주어진 숫자를 계산dp리스트의 N번째 index는 N번째 index가 가장 큰 수가 될 수 있도록 갱신계산된 dp리스트 중 가장 큰 값을 출력문제보기출처: BAEKJOON Online
카드의 개수와 리스트의 index값을 일치시키기 위해 데이터앞에 0을 추가 값을 0으로 초기화 시킨 dp리스트 생성 카드 개수를 나타내는 반복문 실행 해당 카드 개수를 가지기 위한 방법을 탐색할 반복문 실행 dp리스트를 갱신하며 리스트 내의 최대값을 출력
삼각형의 크기와 같은 dp리스트 생성가장 꼭대기 값을 미리 설정열과 행을 반복문을 통해 탐색하며 이동 경로로 가능한 장소의 최대값을 현재 위치값과 합친 결과를 저장마지막 열의 최대값을 반환📌 dp문제의 가장 기본이라고 생각문제보기출처: Programmers링크: ht
내장 모듈인 defaultdict를 활용하여 마을 정보를 graph형태로 저장 무리 형성의 유무를 파악하기 위한 check리스트 생성 check리스트의 값을 기준으로 무리에 대한 정보를 dfs형식으로 탐색하며 갱신 무리 한개의 탐색을 마칠 때마다 정답에 값을 1 추가
전체 시간과 마지막 작업 시간, 처리한 작업의 개수를 각각 설정작업의 처리량이 전체 작업량보다 작을 동안 반복문 실행전체 작업 중 시작 시간이 마지막 작업시간보다 나중이고, 전체 시간보다 같거나 작을 경우 heap에 추가만약 heap이 존재 하는 경우 해당 작업의 소요
2진수로 저장된 수가 만들 수 있는 수를 set에 중복없이 추가 0번 idx의 수가 변할 일은 없기 때문에 0번 index일 경우는 제외 3진수로 저장된 수가 만들 수 있는 수를 변수에 저장 해당 변수가 set안에 존재한다면 해당 수가 정답
간선의 정보를 탐색 양방향 간선이기 때문에 양쪽의 노드에 간선 정보를 함께 저장 각 노드별 가장 큰 수를 저장할 dict인 distance를 생성 시작점을 기준으로 BFS 출발점과 노드의 거리를 가장 짧은 값으로 갱신해주며 진행 distance의 key, value를
각 좌표별 비용을 저장할 list를 최대값으로 설정하여 생성 시작점을 기준으로 움직일 수 있는 위치를 방향을 각각 설정하여 deque에 append 시작점의 위치를 0비용으로 갱신 앞으로 이동할 위치의 값을 최소값으로 갱신하며 BFS 탐색 📌 현위치까지 이동한 방법이
각 트레픽에 대한 정보를 날짜, 응답완료시간, 처리시간으로 나눈 값으로 저장 트레픽 시작점과 끝점(탐색 포인트)을 datetime과 timedelta 모듈을 활용하여 check_times에 저장 각각의 트레픽 정보 또한 다른 list인 start_end_times에 저
각 간선은 단방향 간선으로 각 노드에 대한 정보를 dict로 저장노드별로 거리 정보를 저장할 dict를 출발지를 제외하고 최대값으로 설정거리별로 정렬될 수 있도록 heap트리를 사용탐색할 노드와의 거리를 최소값으로 갱신각 노드와의 거리를 출력📌 해당 문제는 노드와 간
정답을 +버튼만 눌러 이동하는 횟수로 설정모든 상황을 고려하여 최대로 이동할 수 있는 범위로 설정모든 채널의 경우에서 번호를 눌러 이동할 수 있는 채널인지 탐색만약 번호를 눌러 이동할 수 있는 채널이라면 해당 채널에서 이동하려 하는 채널으로 이동하는데 눌러야 하는 버튼
시작점과 도착지점, 물의 좌표를 변수에 저장 고슴도치가 이동할 수 있는 장소가 있는동안 반복문 실행 다음차례에 물이 이동하는 칸은 고슴도치가 이동할 수 없는 칸이기 때문에 물 먼저 이동 저장해둔 물이 존재하는 좌표들을 통해 물을 확산시키고, 1턴 동안 확산된 물의 좌표
공기청정기 위치의 좌표를 찾아 저장먼지의 확산이 먼저 일어나므로 diffusion함수 실행확산되는 먼지를 저장할 배열 생성확산된 먼지와 탐색이 완료된 배열의 정보로 새롭게 생성한 리스트 내용 갱신본래의 리스트에 확산된 먼지를 저장했던 리스트 내용을 복제공기청정기 작동
노드의 방문 여부를 나타낼 visited와 간선 정보를 담을 graph생성 각 노드간 연결될 수 있는 간선의 길이 정보를 저장 이미 연결되어 있는 간선의 가중치는 0으로 전환 한 점에서 출발하여 heapq를 활용해 연결 현재 노드와 연결된 가장 짧은 가중치를 갖는 간선
각 명령어에 따른 작업을 수행 최대값을 삭제하는 경우에는 해당 heap리스트를 역순으로 배열 후 값을 제거 제거 후 다시 리스트를 역순으로 배열 남아있는 heap리스트의 최소값과 최대값을 출력 heap리스트에 값이 남아있지 않다면 [0, 0]을 출력
정사각형 배열의 크기와 같은 dp리스트를 생성 정사각형 배열을 순차적으로 순회하며 값이 존재하는 경우에 해당 좌표의 상, 좌, 좌측상단의 dp리스트 값 중 최소값을 해당 좌표 dp리스트에 저장 만약 해당 dp리스트의 좌표 값이 answer보다 크면 answer값 갱신
각 분류별 항목에 값을 tagging 해줌 지원자들을 탐색하며 해당 지원자가 포함될 수 있는 모든 경우의 수를 tagging한 값의 나열을 통해 all_case에 추가 경우의 수에 포함되는 인원의 코딩테스트 점수 값을 저장한 value 리스트를 오름차순으로 정렬 쿼리문
1, 10, 25의 동전으로 모든 경우의 동전이 생성 가능하므로 1, 10, 25를 포함한 리스트 생성100단위로 값이 중복되어 생성되므로 100크기의 dp리스트를 생성0부터 99원을 생산할때 필요한 최소 동전 개수를 구하며 dp리스트 갱신자동차 비용에 대한 값이 전부
heap리스트에 회의의 시작시간을 기준으로 push 만약 현재 진행중인 회의가 있고 heap리스트의 첫번째 값이 해당 회의의 끝나는 시간보다 늦다면 heap리스트에서 뽑은 회의의 끝나는 시간으로 교체 진행중인 회의가 없다면 현재 뽑은 값의 끝나는 시간을 추가 진행중인
먼저 온 사람이 컴퓨터를 사용하기 때문에 시작시간에 따라 정렬 만일 컴퓨터를 사용중인 사람이 없거나 가장 빨리 종료하는 사람의 시간이 시작시간보다 뒤일 경우 자리 사용개수 증가 하지만 빈 자리가 있을 경우 빈 자리에 배치 가장 빨리 종료하는 사람의 시간이 시작시간보다
board의 str값으로 된 단단함을 int타입으로 바꾸고, 물의 좌표를 저장 cnt_list를 생성하여 파도가 치는 횟수를 저장 물의 좌표를 하나씩 pop해가며 모래의 단단함을 감소 만약 모래의 단단함이 0이 된다면 해당 위치의 좌표를 waters에 추가하고, 해당
이수할 과목의 in_degree가 꼬이지 않게 하기 위해 선수과목을 기준으로 정렬 입력받은 값을 차례대로 받으며 이수할 과목과 선수과목의 in_degree에 +1한 값 중 최대값을 이수 과목 degrees에 저장 차례대로 degrees를 출력 📌 in_degree의
입력으로 받은 길에 대한 정보를 너비를 기준으로 최대힙 생성 최대힙의 값을 빼내며 경로압축 진행 만약 출발지와 목적지가 하나의 부모노드를 가지게 된다면 하나의 경로로 이어졌다는 의미이므로 반복문 종료 마지막에 빼낸 값이 경로 중 가장 좁은 길의 너비 📌 군사가 가장
입력받은 정보를 통해 더 위에 서야할 인원의 차수를 +1 자신보다 뒤에서야 할 사람을 저장 만약 차수가 1이라면 deque에 추가 deque에서 pop해가며 뽑은 값의 뒤에 서야 하는 인원들의 차수를 -1 만약 차수가 1이 된다면 deque에 append deque에
입력받은 강의 정보를 통해 반복문 실행 heap이 존재하지 않거나, 진행중인 강의 중 가장 빨리 끝나는 강의의 종료시간이 현재 탐색중인 강의의 시작시간보다 늦을 경우 강의실 사용 개수를 증가시키고 heap에 종료시간을 추가 빨리 끝나는 강의의 종료시간이 시작시간보다 빠
시작점을 이동하는데 부순 벽의 개수를 기준으로 heap에 추가 heap에서 최소값을 기준으로 출력하여 이동할 수 있는 위치에 대한 값을 추가 만약 이동할 위치에 벽이 존재한다면 현재 위치에 이동하는데 부순 벽에 +1된 값으로 계산 이동할 위치의 값과 현재 위치에서 해당
입력받은 데이터를 그래프의 형태로 저장 후 나중에 풀 문제의 차수를 +1 차수가 0인 값을 heap에 추가 heap에서 값을 pop해 나가며, pop한 값은 풀게 된 문제이므로 result에 값을 추가한 후 그래프 형태로 저장한 값을 불러 해당 문제를 풀고 나서 풀 문
dictionary에 A-Z까지의 값을 저장 입력 받은 문자의 값을 뒤집어 스택에 저장하여야 pop하며 진행할 때 순차적으로 진행가능 새로 들어갈 문제의 numbering은 27부터 시작 stack에서 값을 빼며 사전내에 존재하는 값인지 확인 존재하는 값이면 index
enumerate를 활용하여 입력받은 데이터와 idx값을 함께 사용 stack내부에 값이 존재하지 않아 레이저를 수신할 탑이 없을 때 answer에 0을 추가 만약 현재 탑의 높이가 stack내부의 값보다 높다면 뒤로 진행될 탑의 레이저는 현재 탑에 막히기 때문에 st
배열 내에서 가장 긴 블록을 탐색 visited리스트를 생성하여 일반 블록을 중복 탐색하는 것을 방지 배열을 완전탐색하며 일반블록일 경우 BFS로 이어진 블록을 탐색 탐색하며 무지개 블록의 개수를 count해주고, 블록들의 좌표값을 한 개의 리스트에 저장 탐색이 끝난
저장 리스트를 반으로 잘라 왼쪽, 오른쪽으로 나눈다고 생각 왼쪽이라 생각할 heap리스트는 최대힙, 오른쪽은 최소힙으로 생성하여 중앙값에 접근 만약 시작값이 거나, 두 리스트의 길이가 같다면 왼쪽 리스트에 저장 값이 존재하는데 두 리스트의 길이가 다르다면 오른쪽 리스트
처음 입력받은 기억한 멜로디에 대한 값을 code_reform함수를 통해 #코드 값 처리 노래목록에 하나씩 접근해 가며 적합한 노래인지 검증 📌 잘 사용하지 않던 replace함수를 사용해 풀이를 진행해보았다.
모든 칸을 순회하며 이동할 칸에 대한 정보를 갱신 만약 이동할 칸이 board의 범위를 벗어나지 않는다면 부모노드를 갱신 모든 칸의 순회를 마친 뒤 부모노드의 개수가 연결된 경로의 개수이자 필요한 safe_zone의 개수 📌 값 칸에 대한 고유값을 어떻게 지정할지 생
각 학생에 대한 정보를 받으면 prefer_dict에 선호하는 학생 목록을 저장 자리배열을 나타내는 arr을 순회하며 해당 칸에 대한 선호도 점수와 빈자리 점수를 계산 만약 최적의 자리가 탐색되면 앉을 자리를 갱신 자리배열 순회 후 최적의 자리에 해당 학생 배치 완성된
상어의 현재 위치를 탐색 상어의 위치를 기준으로 거리에 대한 값을 time_table에 저장 만약 잡아먹을 수 있는 물고기가 존재하는 칸이라면 fishes_pos에 값을 저장 bfs탐색이 끝난 후 최적의 위치에 존재하는 물고기 위치와 상어의 위치를 반환 반환된 물고기
입력받은 파이어볼에 대한 정보를 arr에 저장 움직이기 전에 새로운 배열과 파이어볼 정보를 저장할 리스트를 생성 기존의 파이어볼 정보를 기준으로 새로운 배열에 이동 뒤 파이어볼 위치를 저장하고 파이어볼 정보를 갱신 저장한 새로운 배열과 파이어볼 정보를 기존에 존재하던
파이어스톰의 스펠에 따라 fire_storm함수를 호출 임시 배열인 tmp_arr을 생성한 뒤 구역탐색을 시작 하나의 구역에 접근할때마다 section 배열을 생성한 뒤 해당 위치에 대한 값을 저장 정보입력이 완료된 section을 회전 회전된 정보를 전체 임시 배열인
정리된 모든 파일 정보를 넣을 file_list 생성 파일 정보를 넣을 file_info생성 파일의 idx를 조작해나가며 HEAD, NUMBER, TAIL 세 부분으로 분할 분할한 정보와 파일의 본래 idx를 포함시켜 file_info에 넣은 뒤 file_list에 a
컨베이어벨트 윗부분과 아랫부분을 분리 위 컨베이어벨트의 끝부분을 빼서 아래 컨베이어벨트의 뒷부분에 추가 아래 컨베이어벨트의 앞부분을 위 컨베이어벨트의 앞부분에 추가 만약 로봇이 내리는 위치에 존재한다면 내리는 위치의 로봇을 제거 제일 뒤에 존재하는 로봇부터 이동 조건을
초기 위치와 바라보는 방향 설정 및 이동했던 좌표를 저장할 리스트를 생성명령어를 하나씩 수행하며 위치 좌표와 방향을 변경하며 이동했던 좌표를 저장이동하면서 찍힌 좌표의 최대값과 최소값의 차이로 최대 변의 길이를 계산계산된 크기로 이차원배열을 생성 후 이동했던 좌표의 정
탐색할 위치의 시작점을 지정 지정한 시작점을 기준으로 체스판 크기에 맞게 탐색 시작점이 짝수일 경우와 홀수인 경우에 맞춰 따로 배열의 수정 회수 갱신 수정 회수의 최소값을 갱신 후 출력
명령어 순서에 따라 방향과 거리 이동 visited리스트를 생성 비를 내린 후 방문 리스트를 갱신 대각선 방향의 구름 개수를 count한 후 물 복사 방문하지 않은 위치이고 물의 양이 2이상인 위치에 구름 생성 모든 명령을 마친 후 남은 물 양의 합을 출력
문제보기출처: BAEKJOON Online Judge링크: https://www.acmicpc.net/problem/1916
📌 수익이 0원일 때 조건이 있어야 reculsive exceed나 time error가 뜨지 않는다. 문제보기출처: Programmers링크: https://programmers.co.kr/learn/courses/30/lessons/77486
💡 문제 해결 🧾 문제 설명 문제보기 🖨 입출력 📝 풀이 출처: Programmers 링크: https://programmers.co.kr/learn/courses/30/lessons/81302
💡 문제 해결 🧾 문제 설명 문제보기 🖨 입출력 📝 풀이 출처: Programmers 링크: https://programmers.co.kr/learn/courses/30/lessons/72410
문제보기출처: Programmers링크: https://programmers.co.kr/learn/courses/30/lessons/81301
출처: Programmers링크: https://programmers.co.kr/learn/courses/30/lessons/17682
문제보기출처: Programmers링크: https://programmers.co.kr/learn/courses/30/lessons/60057
문제보기 출처: BAEKJOON Online Judge링크: https://www.acmicpc.net/problem/15685