
https://www.acmicpc.net/problem/1920이진 탐색의 개념 그대로 풀면 되는 문제이다.A는 반드시 정렬되어있어야 이진탐색을 적용할 수 있다.low와 high를 각각 0, A의 마지막 인덱스로 선언 중간 인덱스인 mid를 찾아서 x와 비교
프로그래머스 성격 유형 검사하기 문제를 풀었다.딕셔너리에 성격 유형들을 저장해두고 점수를 더하려고 했는데 모든 유형들을 미리 정의하는 건 노가다라고 생각했다.외부 함수인 defaultdict를 이용하여 기본 타입을 int로 셋팅새로운 key가 추가될 때 기본 value
오늘의 회고 solved.ac의 클래스 문제를 하나씩 풀어나가고 있는데 백준 11050번 이항 계수 1 문제를 풀었다. 시도한 것 팩토리얼을 반복문으로 돌려서 풀었는데 N이 10이하라서 그런지 시간초과가 안났다. 그래서 재귀 복습할 겸 재귀로도 풀어봤다. 코드 1)

오늘은 프로그래머스의 귤 고르기문제를 풀면서 dictionary key나 value로 정렬하는 방법을 공부했다.먼저 defaultdict를 이용해서 key는 크기로, value는 그 크기 개수대로 딕셔너리를 만들어준 후딕셔너리의 value 값으로 내림차순 정렬해주고 싶

오랜만에 이분탐색을 복습할 겸 관련 문제를 백준 10816번 숫자 카드 2 풀었다.만약 찾으려는 숫자가 mid 값보다 작으면 high 인덱스를 감소시키고mid 값보다 크면 low 인덱스를 증가시키고 같으면 cnt를 1 증가 시키는 방식으로 짰다.중복되는 숫자가 없었다면
오늘의 회고 요즘 solved.ac 클래스 문제를 하나씩 풀고 있다. 오늘 11866번 요세푸스 문제 0을 풀면서 드디어 CLASS 2+ 달성했다!! 야호~! 시도한 것 join을 이용해서 정답을 출력하려고 하는데 자꾸 에러가 났다. 해결방법 > join을 이용하려

오늘의 회고 오늘은 골드바흐의 추측 2문제를 풀었다. 문제 이름은 똑같은데 난이도가 다른 문제였다. 실버 2: 9020번 골드바흐의 추측 실버 1: 6588번 골드바흐의 추측 9020번 골드바흐의 추측 9020번 풀이 크게
오늘의 회고 프로그래머스의 숫자 문자열과 영단어 문제를 풀었다. 어렵지 않게 풀었지만 생각도 못한 간단한 풀이를 발견해서 다시 한 번 딕셔너리의 엄청남을 알게 됐다!! 코드 분석 내 풀이 number라는 리스트에 zero부터 nine까지 넣어주고 인덱스 번호랑 맞춰주
오늘의 회고 오늘은 클래스2 문제 solved.ac를 풀었다. 왜 실버인지도 모르겠는 정말 쉬운 문제라고 생각했는데 그게 아니었다. 정말 모르고 있던 개념 하나를 배웠다. 나의 틀린 풀이 round 함수를 이용했는데 틀렸다. 새로 배운 점 사사오입(문제에서 요구)
오늘의 회고 어제 union find 알고리즘을 공부하고 오늘은 관련된 문제인 1717번 집합의 표현을 풀어봤다. 시도한 것 풀면서 에러가 다양한 에러가 많이 났다. Recursion Error recursion error가 뜬 코드이다. 그래서 메인 코드에서
오늘의 회고 오늘은 프로그래머스의 기사단원의 무기 문제를 풀어봤다. 처음에 쉬운 문제인 줄 알았는데 시간 초과가 나서 당황했던 문제이다. 시도한 것 약수의 개수를 먼저 1부터 그 수까지 세서 구하고 limit 초과하면 power를 더하는 방식으로 정직하게? 풀었다.

오늘은 처음으로 플레 큰 수 만들기 문제를 풀어봤다. 사실 그리디이기도 하고 만만해보여서 도전해봤는데 그저께부터 도전하다가 결국 구글링의 도움을 받은 문제이다..처음 문제를 보고 자릿수대로 정렬을 해야겠다고 생각했다.그래서 sort의 key 옵션을 써서 자릿수대로 정렬

브루트포스로 대피소 문제를 풀었다.최댓값의 범위를 x,y의 최댓값인 100000으로 줬더니 67점이 나왔다.해결: INF로 초기화했다. 이걸 공부하면서 파이썬으로 무한값을 주는 방법을 처음 알았다.브루트포스 문제라서 combination으로 n개의 집들 중 k개를 뽑아

소마 코테를 봤을 때도 그렇고 내가 그리디 알고리즘 로직을 많이 안다뤄봤다고 생각해서 그리디 문제를 풀었다. 앞으로 당분간 그리디 문제 풀 예정이다!오늘은 문제 제목부터 강렬한 소가 길을 건너간 이유5를 풀었다.n의 최대 개수 100000개이고 시간제한도 2초라 넉넉해

오늘은 괄호 회전하기 문제를 풀었다.처음에는 check함수에서 스택에 열린 괄호들만 넣고 닫힌 괄호를 만났을 때 해당하는 열린 괄호가 있으면 그 괄호를 삭제해주는 방식으로 했었다. 이런 식으로 하면 테스트케이스 14에서 틀리게 된다.이 경우가 반례이다. 괄호가 열고 닫

그리디 알고리즘으로 14247번 나무 자르기 문제를 풀었다.그때그때 큰 걸 더하자이 생각으로 매일 자라는 나무 길이를 더하면서 가장 긴 나무를 더해갔다.(문제에서 같은 나무를 여러 번 자를 수 있다길래)이렇게 풀었더니 예제도 틀렸다...나무를 딱 한 번씩만 자르고 성장
14503번 로봇 청소기 문제를 풀었다. 이건 특정 알고리즘이 아니라 그냥 구현 문제인데 아이디어를 어떻게 떠올리냐가 관건이다.문제 풀면서 예외처리를 엄청나게 하다가 정말 효율적인 방법이 없을까하고 풀이를 찾아봤다. 찾아보면서 알게 된 사실이 여러가지 있다.북동남서 0

오늘 99클럽의 문제인 기능개발을 풀었다.문제는 이해되는데 구현을 어떻게 해야할지 몰라서 막막했던 문제이다.while문으로 progresses 길이가 0이 될 때까지 첫 번째 값만 완료했는지 확인하면서 100% 완료하면 첫 번째 값만 pop주석으로 풀이를 써놨지만 구현

오늘은 그리디로 공주님의 정원 문제를 풀었다. 그리디는 뭔가 쉬운 것 같으면서도 풀이를 생각해내는 게 어려운 것 같다.매번 현재 시점에서 피어있는 꽃 중에서 가장 마지막에 지는 꽃을 선택처음에 3월 1일을 기준으로 그 전에 피고 가장 마지막에 지는 꽃을 갱신하면서 반복
오늘의 회고 오늘은 그리디, 우선순위큐로 강의실 배정 문제를 풀었다. 우선순위 큐로 문제를 처음 풀어봐서 개념 공부도 같이 했다. 아주 좋다!! 시도한 것 우선 순위큐로 풀기 전에 그리디로만 풀었는데 시간초과가 나왔다. 생각해보니까 N의 범위가 210^5이고 이중

1437번 회고 문제를 dp로 풀었다.dpn = n의 분해곱 최댓값dp1 = 1dp2 = 2dp3 = 3dp4 = 4 => 2+2dp5 = 6 => 2+3dp6 = 9 => 3+3dp7 = 12 => 2+2+3dp8 = 18 => 2+3+3dp9 = 27 => 3+3+

오랜만에 DP 문제인 연속합을 풀었다.DP 문제는 3가지 방법을 거쳐서 풀고 있다.참고) 바킹독님DP 푸는 과정 1\. 테이블 정의하기2\. 점화식 찾기3\. 초기값 정하기dpn = > index n까지 숫자 합 중 최댓값dp1 = max(dp0, dp0+dp1)dp2

1744번 수 묶기 문제를 풀었다.양수는 내림차순, 음수는 오름차순으로 정렬하고1이면 그냥 더하기, 음수가 짝수개이면 음수끼리 곱해서 더하기, 음수가 홀수개인데 0이 있으면 0 곱해서 더하기그리고 리스트에서 이미 더한거는 1002로 처리이런식으로 경우의 수를 모두 생각

2805번 나무 자르기 https://www.acmicpc.net/problem/2805 아이디어 코드

https://www.acmicpc.net/problem/1654사실 7개월 전에 풀었던 문제인데 또 틀렸었다진짜 안풀면 다 까먹는 게 맞는 것 같다low = 1, high=(주어진 랜선의 최댓값)으로 한 후 이분탐색 내가 틀렸던 이유 : 처음에 low = 0

https://www.acmicpc.net/problem/2512앞서 풀었던 1654번 랜선 자르기와 아주 비슷한 문제였다.이분탐색으로 예산 이하 중 가장 큰 값을 찾으면 된다.예산 이하의 값이 나올 때마다 answer에 갱신해주면서 진행했다.WHY? 예산

https://www.acmicpc.net/problem/2343약간 애착이 가는 문제이다.어제 풀려다가 방법이 생각 안나서 그냥 누웠는데자기 전에 고민하다가 생각나서 녹음해놓고 다시 잤다.이분탐색 돌 때, 동영상 길이를 합치면서 mid 초과가 되면 다른 묶음

https://www.acmicpc.net/problem/11660dpi = dpi + graphi-1 여기서 graph는 입력 받은 그대로의 2차원 리스트이고dp 테이블은 0행과 0열은 0으로 가득 채운채, 각 행의 누적합이 저장되어 있는 테이블이다. 경험상

https://www.acmicpc.net/problem/10986n의 범위만 더 작았더라면 이것도 백퍼 맞았을 것 같다.모든 구간들의 누적합을 구해서 나눠도 되지만(위 코드처럼) n의 범위가 1000000으로 매우 커서 시간 초과가 난다.모든 구간들의 누적합

https://www.acmicpc.net/problem/2018투포인터로 start, end를 1부터 시작해서 구간의 합을 구하고 합이 n보다 작으면 end + 1, n보다 크면 start + 1 n이면 정답 카운트 하고 start + 1, end + 1을

https://www.acmicpc.net/problem/12761동규가 갈 수 있는 모든 경우를 가면서 현재 위치에서 +1씩 증가시키면 된다.BFS를 1차원 리스트로 할 수 있는 좋은 문제인 것 같다.
25916번 싫은데요 https://www.acmicpc.net/problem/25916 아이디어 처음에 부분합을 구할 때 이런 식으로 구했다가 매번 합을 처리해줘야해서 시간 초과가 났다. 투포인터 알고리즘 코드

https://www.acmicpc.net/problem/2531sushi 리스트 입력받기회전초밥이므로 앞에 있는 초밥 (k-1)개를 sushi 리스트에 append이유 : k개씩 훑으므로 마지막 인덱스부터 k개를 보기위해sushi_selected boolea

https://www.acmicpc.net/problem/1003DP 문제처럼 규칙만 찾으면 쉬운 문제이다.심지어 규칙 찾기도 쉬운 문제인 것 같다.fibon = fibon-1 + fibon-2fibon = \[fibon-1+fibon-2, fibon-1+fi

https://www.acmicpc.net/problem/18870좌표 압축?수의 범위가 매우 큰 상태에서 수의 값과 상관 없이 숫자 간의 대소관계만 알면 될 때 이용하는 알고리즘이다.예제 1번2 4 -10 4 -9 이므로 중복 제거 + 오름차순 정렬하면\-1

https://www.acmicpc.net/problem/11724입력받은 간선들을 양방향 그래프로 만들어서 그 노드에 방문했는지 체크하면 된다.한 번 틀렸는데 틀린 이유는 처음에 양방향 그래프가 아닌 단방향 그래프로 만들어서 틀렸다.반례)3 22 13 2 a

https://www.acmicpc.net/problem/1389친구관계를 입력받으면 friends 리스트에 양방향으로 넣어준다.ex) 2 4일 때, friends2 = 4, friends4 = 2BFS 함수에 1부터 n까지 모두 넣으면서 케빈 베이컨의 수가

https://www.acmicpc.net/problem/5430deque을 쓴 이유는 R이 있으면 뒤집어야하는데 flag 변수로 앞뒤만 구분해놓고 pop으로 뒤에 있는 걸 빼거나 popleft로 앞에 있는 걸 빼기 위해서이다.틀렸던 이유반례)1D0\[]ans

https://www.acmicpc.net/problem/5525처음에 이렇게 풀었다가 50점 맞았다.arr a:b의 시간 복잡도 : O(b - a)O(m\*n)이라서 시간초과가 난 것 같다.그래서 다른 방법을 생각했다.(정답 코드)current는 현재 보고

https://www.acmicpc.net/problem/17298주어진 리스트 입력 거꾸로 보면서 스택에 아무것도 없으면 그 숫자를 넣고 아니라면 top이랑 비교해서 푸는 문제이다. 그림으로 표현하면 다음과 같다.시간복잡도는 정답코드랑 똑같이 O(n)이지만

https://www.acmicpc.net/problem/249317928번 오큰수 문제와 아이디어와 코드가 너무 비슷하다. \+) 만약 이 문제를 풀었다면 바로 오큰수 도전해보는 것도 좋을 것 같다.이 문제의 아이디어는 스택을 이용하여 top보다 숫자가 크거

https://www.acmicpc.net/problem/2910처음에 몇 번 나왔는지 세기 위해서 딕셔너리를 쓸까 생각했다가 등장 횟수가 같을 때 정렬하기가 효율적이지 않을 것 같아서 리스트로 방향을 틀었다.saved라는 리스트에 value, cnt, idx

https://www.acmicpc.net/problem/2170한 쪽 방향에서 다른 쪽 방향으로 쓸어가는 알고리즘인 Sweeping 알고리즘을 이용했다.이 문제의 경우는 세 가지이다.1) 선분이 완전 겹치는 경우2) 선분이 약간 겹치는 경우3) 선분이 아예

https://www.acmicpc.net/problem/1911\+) 옛날에 풀었던 문제인데도 어려웠다. 언젠가 다시 한 번 봐야겠다...웅덩이 좌표를 시작 위치를 기준으로 오름차순 정렬한다.반복문으로 웅덩이를 하나씩 보면서, 커버할 수 있는 널빤지의 개수를

https://www.acmicpc.net/problem/1927heapq를 사용할 줄 알면 풀 수 있는 문제이다. 이 문제 덕분에 heapq를 확실히 알게 되었다.heapq에서 주로 쓰이는 것은 heappush, heappop하지만 최대힙은 다르다. heap

https://www.acmicpc.net/problem/90123년 전부터 굉장히 주기적으로 푼 문제이다1) stack을 만들어서 (이 나오면 push, )이 나오면 pop하면 된다.2) pop할 때 stack이 empty라면 answer = "NO" ex)

https://www.acmicpc.net/problem/14889팀을 나누기 위해 방문하지 않았다면 True로 바꾸고 함수를 다시 실행한다. (visited가 True라면 스타트팀, False라면 링크팀) 현재 몇 명이 팀에 있는지 cnt, 중복탐색 방지를

https://www.acmicpc.net/problem/1436666이 들어가는 수를 구해야해서 앞에만 숫자를 붙이면 된다고 생각했었는데 5666 다음으로 큰 수는 6666이 아니라 6661이기 때문에 앞에 숫자를 붙이는 게 규칙은 아니구나 라는 것을 알았다

https://www.acmicpc.net/problem/14888코드를 보면 알겠는데 아직 백트래킹 아이디어 떠올리기가 쉽지 않다.내가 막혔던 부분은 1) 연산자를 이미 사용했다면 빼야하는데 이걸 빼면 리스트에도 반영이 되니까 어떤 식으로 빼야할지 2) +가

https://www.acmicpc.net/problem/7568모든 사람들을 다 돌면서 자기보다 몸무게 많이 나가고, 키도 큰 사람이 몇 명인지만 세어주면 된다. 문제에서 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다고

https://www.acmicpc.net/problem/1941아이디어 생각해내는 게 너무 어려운 문제였다.처음에 생각했던 건 칠공주들이 이웃해있어야하니까 해당 칸에서 움직일 수 있는 경우가 오른쪽과 아래쪽이고 이걸 어떻게 처리해야할지 고민을 했었다.모든 경

https://www.acmicpc.net/problem/17478어떤 문장이 반복되는지 찾고 마지막에 무엇을 출력해야되는지만 찾으면 된다.

https://www.acmicpc.net/problem/4779분할정복이 알고 나면 재밌는 알고리즘인 것 같다. 3등분으로 분할 정복을 실행하고 left를 분할 정복한 후 가운데는 빈칸으로 만든다.right도 분할정복해도 되지만 어차피 left랑 같기 때문에

6603번 로또 https://www.acmicpc.net/problem/6603

https://www.acmicpc.net/problem/1914백준 11729번 하노이 탑 이동 순서 문제와 거의 비슷했다.하노이탑 원판 3개를 1번에서 3번으로 이동하기 위해서는1\. 원판 2개를 1번에서 2번으로 이동2\. 가장 큰 원판 1번에서 3번으로

https://www.acmicpc.net/problem/2012예상 등수 오름차순 정렬해서 매긴 등수와 절댓값 차이만 구하면 된다.

https://www.acmicpc.net/problem/11501예전에 풀었던 문제인데 그때는 문제를 보고도 이해가 안됐는데 지금은 이해가 잘된다. 확실히 성장하긴 했나보다.처음에는 입력 리스트가 오름차순 정렬되어있을때, 내림차순 정렬되어있을 때 따로 생각했

https://www.acmicpc.net/problem/176091) 회문 확인2) 유사회문 확인이거 두 개만 확인하면 문제를 풀 수 있다. 회문인지 확인하는 방법은 문자열을 거꾸로 뒤집었을 때도 같은지 확인하면 된다.유사회문인지 확인하는 방법은 문자열 맨

https://www.acmicpc.net/problem/2141누적 인구가 중간 위치 이상에 도달하는 마을을 찾으면 되는 문제이다.해야할 것은 마을을 오름차순으로 정렬한 후, 인구의 중간값을 찾아야한다.여기서 내가 틀렸던 건데 만약 인구수가 홀수일 때는 2로
16401번 과자 나눠주기 https://www.acmicpc.net/problem/16401 아이디어 막대 과자 길이를 이분탐색으로 찾으면 된다. 그리고 막대 과자를 나눴을 때 조카 수보다 많이 나오거나 같을 때는 low = mid + 1(더 긴 막대과자를 찾도록)

https://www.acmicpc.net/problem/2467코드만 보면 간단한 문제인데 꽤 걸렸다.인덱스 투포인터를 이용하여 low, high를 옮겨주면서 풀면 된다.만약 llow + lhigh 의 절댓값이 원래 저장되어있던 차이보다 작으면 갱신, 0이라

https://www.acmicpc.net/problem/1260dfs bfs를 각각 구현하면 된다.이때 간선을 입력받고 그래프마다 오름차순 정렬을 해줘야한다. 안 그러면 탐색 순서가 달라진다.

https://www.acmicpc.net/problem/1697너무 간단한 BFS 문제인데 어처구니 없는 실수로 틀렸다수빈이가 갈 수 있는 모든 경우를 살펴보면 되는데 내가 했던 실수는저 if부분이다 위 코드처럼 i의 범위를 확인하고 graphi == 0인지

https://www.acmicpc.net/problem/7576업로드중..먼저 토마토를 입력 받고 익은 토마토들만 큐에 넣은 후 bfs를 돌렸다. bfs 후 토마토의 결과에 0이 하나라도 있으면 하나라도 안 익은 상황이므로 -1을 출력하고 즉시 종료한다.만약

https://www.acmicpc.net/problem/3055코드를 기능별로 구분하고 싶어서 함수를 4개 썼다.\*인 물을 기준으로 몇 분만에 확장되는지 BFS를 돌린다.고슴도치를 기준으로 BFS 돌릴 때 물이 채워져있으면 현재 시간이랑 물이 채워진 시간을

https://www.acmicpc.net/problem/2146BFS를 두 번 돌려야 하는 문제이다.1) 섬 구분하기 위한 BFS2) 섬과 섬 사이의 최소 거리를 알기 위한 BFS섬을 먼저 2부터 숫자 부여를 해준다. (섬끼리 구분하기 위해)입력으로 1 1

https://www.acmicpc.net/problem/6236문제 설명이 진짜 난해하다...현우는 N일 동안 사용할 금액이 입력으로 주어지고 통장에서 M번, K원을 빼서 사용한다. 예제 1번에서100 400 300 100 500 101 400이 입력으로 주

https://www.acmicpc.net/problem/1300아이디어를 생각하는 게 어려웠던 문제이다.우선 Bk에서 k는 Bk의 원소 값보다 작거나 같은 원소의 개수이다.Bk=x인데 우리는 x를 찾아야한다. 그럼 x보다 작거나 같은 원소의 개수가 k랑 일치

https://www.acmicpc.net/problem/11000우선순위 큐를 이용하는 문제이다.1) 강의를 시작 시간, 끝나는 시간으로 오름차순 정렬한다.2) 강의실을 heap으로 사용할 예정이다.(room_heap)3) room_heap에 첫번째 강의의

https://www.acmicpc.net/problem/2075처음에 모든 값들을 힙에 넣었다가 메모리 초과가 나왔다.그래서 생각한 방법은 heap에는 데이터 n개만 있도록 유지하는 것이다.heap의 데이터 길이를 n개만 있도록 유지하면서 힙에 있는 최솟값보

https://www.acmicpc.net/problem/1946만약 나보다 서류 등수가 높다면 면접 등수는 내가 더 높아야 뽑힌다.서류 순으로 정렬 후 서류 1등을 뽑는다.서류 1등의 면접 등수를 min_value에 저장해두고 서류 2등부터 면접 등수를 비교

https://www.acmicpc.net/problem/12852우선 리스트를 2개 만드는데 하나(dp)는 1이 되는 연산의 최솟값을 저장하는 리스트 dpn=x은 n이 1이 되기 위해 연산이 최소 x번 필요하다.다른 리스트(pre)는 경로를 추적하는 리스트이

https://www.acmicpc.net/problem/1253아이디어를 떠올리는 게 어렵고 구현은 쉬운 문제였다.arri가 좋은 수인지 투포인터로 합을 구한다.1) arri가 좋은 수인지 확인하기 위해 arri를 제외한 arr2리스트를 새로 만들었다. 2)

https://www.acmicpc.net/problem/17070DP는 아이디어 생각하는 게 어려운 것 같다. 하지만 점화식과 초기값만 잘 생각하면 잘 풀린다.graphi0: 벽 유무graphi1: 끝 방향을 가로 방향으로 파이프를 놓을 수 있는 경우의 수g

https://www.acmicpc.net/problem/1202주어진 가방에 해당하는 보석들을 최대힙에 넣어 더하는 문제이다.1) 보석, 가방 모두 오름차순 정렬2) 가방 무게 작은 것부터 넣을 수 있는 보석들 최대 힙에 가격만 넣기3) 다 넣었으면 가장 큰

https://www.acmicpc.net/problem/12852정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은

https://www.acmicpc.net/problem/6603독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다.로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고

5014번 스타트링크강호는 코딩 교육을 하는 스타트업 스타트링크에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다.스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는

https://www.acmicpc.net/problem/2579계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

https://www.acmicpc.net/problem/14940지도가 주어지면 모든 지점에 대해서 목표지점까지의 거리를 구하여라.문제를 쉽게 만들기 위해 오직 가로와 세로로만 움직일 수 있다고 하자.지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은

https://www.acmicpc.net/problem/6593당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 지나갈

https://www.acmicpc.net/problem/2468재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한

https://www.acmicpc.net/problem/9663N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.첫째 줄에 N이 주어진다

https://www.acmicpc.net/problem/11825 0\-7 -3 -2 5 81백트래킹을 공부하면서 바킹독님의 도움을 많이 받았다.생각해보면 주어진 수열의 각 원소들은 선택사항이 2가지이다. 합해지는 수열에 포함되거나 안되거나그래서 수열의 원소

https://www.acmicpc.net/problem/15666N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른

https://www.acmicpc.net/problem/15665N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.첫째

https://www.acmicpc.net/problem/15663N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열첫째 줄에 N과 M이 주어진다. (1

2630번 색종이 만들기 https://www.acmicpc.net/problem/2630 문제 아래 과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한
1780번 종이의 개수 https://www.acmicpc.net/problem/1780 문제 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한

https://www.acmicpc.net/problem/1074한수는 크기가 2^N × 2^N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다.N > 1

https://www.acmicpc.net/problem/14226문제는 이해됐지만 아이디어를 떠올리는 게 어려웠다.모든 경우의 수를 담기 위해 리스트는 1001\*1001로 만들어주고다음 세가지 동작을 반복한다.복사: (screen, screen)→ 화면의

https://www.acmicpc.net/problem/1005처음에 고민했던 건 병렬로 동시에 지을 수 있다는 점이다. 그래서 어떻게 해야할지 몰랐었는데 그냥 DP로 누적하면 된다.a와 연결된 건물들로 for문을 돌면서 원래 자기 자신이 큰 지, 이전에 누

https://www.acmicpc.net/problem/1103BFS로 푼 문제이다.해당 칸만큼 상하좌우로 움직일 때 처음에 이런 식으로 상하좌우 경우를 나눠서 짰었다.하지만 이렇게 하면 굉장히 간단해진다.그리고이 조건을 추가하지 않고 여러 번 반복하여 이미

https://www.acmicpc.net/problem/17836처음에는 검을 찾았는지 확인하는 flag 변수를 활용해 flag가 True라면 벽이어도 그냥 간다고 생각해서 코드를 복잡하게 짰었다. 근데 그렇게 하게 되면 값을 계속 덮어쓰면서 같은 곳을 몇

https://www.acmicpc.net/problem/11725DFS, BFS로 문제를 풀 수 있다.현재 노드에서 연결된 노드들을 탐색하고 방문하지 않은 노드(visitedi == 0)를 찾으면 visitedi에 부모 노드를 저장한다. 그 후 dfs(i)를

https://www.acmicpc.net/problem/1991딕셔너리에 본인을 key로 왼쪽 오른쪽을 value로 넣어주고차례대로 전위, 중위, 후위 순회를 돌면 된다.전위순회 (루트) (왼쪽 자식) (오른쪽 자식)노드가 비어있지 않으면 본인을 출력하고 왼

https://www.acmicpc.net/problem/12851최단 경로를 찾는 건 쉬웠는데 최단 경로로 k에 몇 번 도달했는지 카운트 하는 게 막혔었다.그래서 생각한 것은 어차피 최단 경로로 도착하는건 처음 k에 도달했을 때이다. 그러므로 그 이후에도 아
https://www.acmicpc.net/problem/2447재귀로 별찍기는 처음 풀어본다 아이디어 떠올리는 게 어려웠다n이 가장 작을 때부터 한 줄씩 생각하면 풀린다

https://www.acmicpc.net/problem/9466처음에 생각했던 아이디어는 visited를 2차원으로 만들어서 0에는 현재 방문했는지 여부, 1에는 사이클이 발생했는지 여부를 했었다. 하지만 현재 방문했는지를 하다보니 새로운 노드를 돌 때마다

https://www.acmicpc.net/problem/2230리스트를 오름차순 정렬한 상태에서 투포인터를 진행한다.처음 투포인터(left, right)는 인덱스 0에서 시작하고 숫자의 차이가 m보다 작으면 더 큰수에서 빼기 위해 right 포인터를 +1,

https://www.acmicpc.net/problem/11279파이썬에서 기본 힙은 최소힙이기 때문에 최대힙을 구현하기 위해서는 -를 붙여주면 된다. 예를 들어 입력으로 3 7 5 가 들어오면 -붙여준 상태로 힙에 넣으면 -7 -5 -3 순서가 되기 때문에

https://www.acmicpc.net/problem/11286힙에 저장할 때 튜플 형식으로 절댓값과 부호를 함께 넣어주었다. (-는 False, +는 True로)부호를 넣어준 이유는 -1, 1이 들어갔을 때 문제에서 가장 작은 값이 여러개라면 가장 작은

https://www.acmicpc.net/problem/30804처음에는 set을 반복적으로 써서 시간초과가 났다.투포인터를 둘 다 0에서 시작한 상태로 end만 1씩 늘려가면서 종류를 보다가 3종류가 넘어가면 start를 늘리는 방식으로 하면 된다.

https://www.acmicpc.net/problem/16928뱀과 사다리를 딕셔너리에 넣고 BFS를 돌면서 뱀이나 사다리 칸에 도착하면 우선 옮기고 옮긴 칸이 방문하지 않은 칸인지 확인하고 +1을 해준다.내가 간과했던 점은 3 -> 98(사다리) -> 1

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=python3BFS로 자식 노드를 하나씩 추가하고 leaf 노드만 temp에 저장했다가 leaves를 temp로 갱신하면 된다.

https://school.programmers.co.kr/learn/courses/30/lessons/1844ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는
7662번 이중 우선순위 큐 https://www.acmicpc.net/problem/7662 문제 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭