문제 출처 : https://www.acmicpc.net/problem/1913문제가 쉬워보여 가벼운 마음으로 접근했는데 생각보다 생각이 안 떠올라 결국 노가다...한 변은 N개의 요소들로 이루어져있다. 이를 바람개비처럼 생각해보면 껍질 하나의 총 요소의 개수
출처
문제 출처 : https://www.acmicpc.net/problem/2606 정말 기본적인 탐색 문제 탐색 알고리즘에 어떠한 변형도 없이 작성해서 몇 번 NODE를 지나치는지만 count 해주면 된다. DFS로도 풀어보고 BFS로도 풀이 가능. 간선(EDGE)를
문제 출처 : https://www.acmicpc.net/problem/2108왜 정렬인지 모르겠지만 암튼 정렬문제최빈값을 구하는 부분에서 상당히 애를 먹었었다. 어떻게 진행을 해야 최빈값을 도출할 수 있을지 꽤 오래 고민했다. 그러다 파이썬은 파이썬답게 풀자
문제 출처 : https://www.acmicpc.net/problem/2193동적 계획법인지 의식도 못할정도로 동적 계획법을 이용하면 간단히 풀리는 동적계획법의 기초문제입력값을 나열해보고 N자리 이친수의 개수가 어떻게 결정되는지 살펴보니 문제의 조건에 의해
import sys T = int(sys.stdin.readline().rstrip("\n")) for _ in range(T) : N,M = list(map(int,sys.stdin.readline().rstrip("\n").split())) num
문제 출처 : https://www.acmicpc.net/problem/14503 빈 공간을 탐색한다... DFS? ( bfs는 최단경로, 특수경로에 대해서 효과적! ) 개념은 BFS에 대하여 풀이 가능하겠다만 뭔가 복잡해지니까 그냥 막연하게 풀어버렸다. 예전에 방향
import sys import re N = sys.stdin.readline().rstrip("\n") N_list = list(N) n=len(N) num={0:0,1:0,2:0,3:0,4:0,5:0,7:0,8:0} sn=re.compile('[69]') etc=
import sys from collections import deque N = int(sys.stdin.readline().rstrip("\n")) K = int(sys.stdin.readline().rstrip("\n")) apple = [list(map(int
문제 출처 : https://www.acmicpc.net/problem/2003 사고과정 선형적인 list에서 연속적인 값들을 요소로 하여 주어진 값과 비교. O(n)으로 풀 수 있을 듯! 주어진 값과 비교할 요소값들을 모은 list를 s라고 하자. s+new가
문제 출처 : https://www.acmicpc.net/problem/2178 한 한시간 정도 걸려서 풀은 것 같다... (이것도 장족의 발전입니다ㅜㅜ) 불과 두달 전만 해도 알고리즘 자체에 대해서도 전무후무 그냥 문자열? 관련 문제들 같은것만 풀고 간단한 구현문제
문제 출처 : https://www.acmicpc.net/problem/10610 사고 과정 int형이 10^5개의 자리 수를 감당하지 못할 것 같아 list나 str로 해결하고자 생각했다. str은 "불변"변수이기 때문에 str을 이용하여 값변경은 쉽지 않을 것이
문제 출처 : https://www.acmicpc.net/problem/2579 처음으로 DP 알고리즘을 이용해서 풀어본 문제. 이제는 DP를 자주 이용하고 가장 먼저 떠오른다. 사고 과정
문제 출처 : https://www.acmicpc.net/problem/1012미로 탐색과 같은 탐색 문제. 미로 탐색과는 다른 점이 있다면 DFS와 BFS 중 무엇이 더 효율적인지 생각이 나지 않았다는 것.배추!의 개수는 한정적이기 때문에 새로운 맵을 만들고
문제 출처 : https://www.acmicpc.net/problem/1764간단한 문제. Just 비교지만 이론적으로 알아두고 짚고 갈 부분이 있어 글을 씁니다.분명한 건 pop(0)는 O(n)의 시간복잡도를 가지고, deque에서 popleft는 O(1)
문제 출처 : https://www.acmicpc.net/problem/1406문제 자체는 해부해봤을 때 심플. L,D는 위치(index)를 결정하기 위한 command이며, B,P는 del,insert 를 구현하는 command이다. 결국 이 문제를 해석하면
문제 출처 : https://www.acmicpc.net/problem/2470투포인터 관련 문제란 걸 몰랐다면 못 풀었을라나... 조금은 시간이 소요됐을 듯Brute force로 하면 O(n^2)이 나오는데 이건 아닐 거 아니야. 결국 합해서 0에 가깝게 되
문제 출처 : https://www.acmicpc.net/problem/2667오랜만에 문제를 풀어서 뇌정지가 와서 너무 오래 걸렸다.. 이전에 풀었던 문제와 동일한 유형의 그래프 탐색 단지 좀 더 효율적으로 풀 수는 있을듯. 처음에는 문제를 보고 "전체적인
문제 출처 : https://www.acmicpc.net/problem/11052다이나믹 프로그래밍이라는 걸 알기 때문에 해결할 수 있었던 것 같은데... 백퍼센트는 아니고 그냥 팁이라면 팁으로 알고 있자면 일차원적인 최댓값 문제는 DP, 그리디 알고리즘으로
문제 출처 : https://www.acmicpc.net/problem/14501나도 그만두고 싶다ㅏ..아나ㅏ아..최댓값 관련한 문제는 역시 DP인가? 처음 문제를 접했을 때는 T와 P라는 두 가지 조건에 따라 문제가 해결되므로 예전에 풀어본(?) K-N냅색
문제 출처: https://www.acmicpc.net/problem/20206그냥 우리학교 대회문제라 오기로 풀어봄...위험지역을 지나냐? 안지나냐? = 결론좌표계 관점.1.기울기가 +냐 -냐기울기가 +라면 그래프 기준 좌측 값들이 +, 기울기가 -라면 그래
문제 출처 : https://www.acmicpc.net/problem/1927우선순위 큐를 공부했으니 풀어보자 라는 생각으로 봤는데 최소 힙 문제가 나왔다.간단하게 우선순위 큐에 대해 다시 짚어보자.일반적인 큐는 선입선출의 방식으로 동작하나 우선순위 큐는 일
문제 출처 : https://www.acmicpc.net/problem/7576처음부터 조금 잘못생각하고 있었다.구하고자 하는 것은 며칠 만에 모두 익는가? => 결과는 N일 OR -1일수를 구하는 것은 최단 경로와 마찬가지이기 때문에 처음 있는 토마토들을 기
문제 출처 : https://www.acmicpc.net/problem/1697모든 경우를 다 진행시키면서 확인해봐야 결과를 도출할 수 있다. ( BRUTE FORCE 동시에 완전탐색 ) 그래서 그래프와 같이 탐색을 진행한다. 문제 과정 자체는 그냥 흘러가는
문제 출처 : https://www.acmicpc.net/problem/1987 사고 과정 그래프 탐색이라는 심플한 방식으로 해결 가능한 문제라 생각했다. 맞네? 내 코드가 어떤 경우를 간과하고 해결 불가능. 결론은 내 조건이 잘못됐다. 초기에 작성했던 조건은 잘
문제 출처 : https://www.acmicpc.net/problem/5430심플했다. R과 D라는 두가지 기능밖에 없어 뒤집거나(1) 요소를 제거(2)만 하면 됐다. 입력받은 문자 배열에서 숫자를 제외한 다른 기호들을 제거하기 위해 "파이썬 알고리즘 인터뷰
문제 출처 : https://www.acmicpc.net/problem/2493빗물이나 유사한 느낌의 다른 문제를 떠올리면서 풀은 것 같다. 정말 단순하게 생각해보자. "왼쪽에 나보다 큰 탑이 있으면 그 탑의 INDEX들로 바뀐다."그렇다면 그게 어디에 있는지
문제 출처 : https://www.acmicpc.net/problem/1107 사고과정 결과값은 둘중하나. '수빈이가 이동만 했을 경우' 와 '버튼을 누르고 이동을 했을경우' 이 두가지 값 중 더 작은 값을 구하면 되므로 min하면 되겠다 판단. 수빈이가 이동만 한
문제 출처 : https://www.acmicpc.net/problem/1946 사고과정 나를 제외한 모든 지원자를 비교해서 나보다 두 점수 중에 나보다 큰 값이 존재하면 안된다. 이게 핵심! 결국 모두 비교해야하는 것인가? 그렇다면 시간 복잡도는 O(n^2)일텐데
문제 출처 : https://www.acmicpc.net/problem/1931이 문제를 사실 이전에 풀어서 어느정도 아이디어를 도움받아 풀수 있지 않았나 싶다.결국 몇 가지 회의만을 비교하여 도출할 수 있는 게 아니라 모든 회의를 고려하여 구현해야 정답이 도
문제 출처 : https://www.acmicpc.net/problem/1715처음에는 별생각없이 sort해서 앞에서부터 차례대로 더해나가면 되는거 아닌가 싶어서 짰지만 바로 '틀렸습니다' sort한다고 해도 묶음을 앞에서만 더했을 때 최솟값이 발생하는 게 아
문제 출처 : https://www.acmicpc.net/problem/2225조건들에 대해 집중해서 생각해봤다. 조건1. 결국 모든 경우의 수는 합이 N조건2. 0이 들어가더라도 상관X. 결국 K개의 자리에서 순서 고려조건3. 한 개의 수가 여러 번 사용 가
문제 출처 : https://www.acmicpc.net/problem/1780Divide and Conquer를 배우며 분할정복의 가장 대표적인 예제를 풀었다. 교수님께서 말씀하신 바, 분할정복의 Design은Divide problem to subproble
문제 출처 : https://www.acmicpc.net/problem/11866문제 풀이 공부를 위해 다시 공부.간단한 구현 문제 임에도 불구하고 오랜만에 하다보니1) set과 tuple을 헷갈리고2) tuple의 개념을 헷갈리고배열을 바꾸면서 index를
기본적인 DP문제로 "가장 긴 증가하는 수열"의 크기를 구하는 것과 똑같다.그래서 굳이 포스팅하지 않으려고 했는데 어떤 분이 큰 폭으로 실행 시간을 단축시켜 분석하고자 포스팅하게 되었다. 먼저 DP에 대해서 생각해보면 DP는 for문이 두 개 배치되며 O(n^2)의 시
문제 출처 :https://www.acmicpc.net/problem/18870너무나 파이썬스러운 깔끔한 풀이로 공부하고자 포스팅.O(n^2)의 시간복잡도로 무조건 해결가능한 문제로 결국 문제의 핵심은 어떻게 실행 시간을 단축시킬 것인가?나름 파이썬의 enum
문제 출처 : https://www.acmicpc.net/problem/9019임의의 조건을 설정함에 따라 가장 빠른 길을 찾아 시간을 단축할 수 있을까?결론적으로 이는 불가능하고 따라서 BFS를 이용해 가장 빠른 길을 탐색하여 도출하는 방법밖에 없다.이번 문
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42577
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42578dictionary 자료구조를 이용해 해싱, 빠르게 캐싱기존 \[\["yellow_hat", "headgear"], \["blue_s
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42860Greedy라는 아이디어를 가지고 시작했지만 한 번 생각해보자. 두 가지 방식으로 조이스틱을 움직이게 된다.1\. A가 아닌 알파벳에
문제의 핵심은 "유일성"과 "최소성"최소성을 해결하기 위해 이전에 존재한 최소성을 뒤지고 이런 식으로 할려고 했는데 그 과정이 상당히 번거롭고 오래 걸릴 것 같았다. 실제 문제 해결 방법을 이 방법이 맞긴 했다. 다만 그 과정에서 라이브러리 사용을 통해 심플하게 해결.
출처 : https://www.codetree.ai/training-field/frequent-problems/tree-kill-all/description?page=3&pageSize=20&username=wondang99빡구현 문제이므로 차근차근 생각하면서