https://www.acmicpc.net/problem/1012BFS전체 가로 세로 길이의 빈 배열을 만들고, 해당하는 배추의 위치를 0->1로 바꿔준다.\[0,0,0,...,0,0,0,...] -> \[0,1,0,...,1,1,0,...]그리고 전체 배열을
https://www.acmicpc.net/problem/1966구현문제에서 큐 자료구조 구현을 위해 deque모듈을 사용하였다.파이썬에서 스택은 단순히 리스트로 구현이 가능하지만, 큐는 그렇게 하면 시간복잡도가 증가한다.(pop(0)의 시간복잡도는 O(N))
https://programmers.co.kr/learn/courses/30/lessons/42862 알고리즘 분류 그리디 접근 아이디어 소스 코드
https://www.acmicpc.net/problem/11724BFS기존에 풀었던 BFS문제처럼 문제 풀이를 진행했다. 정점중에서 bfs함수 도중 방문했던 정점(visited2)이라면 bfs함수를 실행하지 않는다. 예제 입력 1의 경우 1,2,5,3,4,6
https://www.acmicpc.net/problem/4963BFS1의 영역을 찾아 다 0으로 바꿔주는 bfs함수.입력받은 좌표를 \[1,0,1,1,0,1] 이런 식으로 리스트로 만들고,전체 배열을 조사해서 그 좌표가 1인 경우 bfs함수 실행한다.
https://www.acmicpc.net/problem/7562 BFS전형적인 bfs문제로 시작좌표 sx,sy에서 종료좌표 ex,ey까지 걸리는 최소 횟수를 구하는 문제이다. l\*l 만들어 bfs함수를 실행시킨다. 해당 함수는 종료좌표가 나올때까지 그 좌표
https://www.acmicpc.net/problem/2644BFSbfs함수에서 from사람부터 시작해서 연결된 사람을 찾아 1씩 더해준다.(시작:7에서 2까지는 1번, 8,9까지는 2번...)i-1은 visited리스트가 인덱스0~8(총 9명)로 이루어져
https://www.acmicpc.net/problem/1715그리디우선순위큐시간초과때문에 조금 고생을 한 문제이다.사실 논리는 간단하다. 제일 작은 수 두 개끼리만 계속 더해가는 것이다.리스트의 0을 구하는 것은 시간복잡도 O(N)이고, del로 데이터를
https://www.acmicpc.net/problem/16953그리디시간때문에..b부터 a까지 2로 나눌 수 있으면 나누고, 끝 자리가 1로 끝나면 1을 빼준다. 둘 다 해당이 안되면 (2 173처럼), b가 a보다 작아지면 (4 2처럼) -1출력
https://www.acmicpc.net/problem/1132그리디1339 단어수학이랑 상당히 유사한 문제이다.처음에 똑같은 문제인 줄 알고 접근했다가 뭐가 문제지 한참 고민했다.차이점은 0으로 시작하는 숫자는 없다 이다.기본적인 접근법은 동일하다.각 알파
https://www.acmicpc.net/problem/2667 BFS지도 전체를 돌면서 1인 경우 bfs함수를 실행한다. bfs함수는 상하좌우를 살펴 이어진 단지를 0으로 바꿔준다.각 단지내 집의 수는 오름차순으로 정렬 후 출력
https://www.acmicpc.net/problem/1065브루트포스규칙을 찾으면 99까지는 모두 한수에 해당이 되고,그 이후부터는 각 자릿수를 받아 등차수열 조건을 만족해야 한다.
https://www.acmicpc.net/problem/7568브루트포스자신보다 더 큰 덩치의 사람의 수를 찾으려면 자신보다 키, 몸무게 둘다 커야 한다.
https://www.acmicpc.net/problem/11725BFSparents리스트는 각각 노드에 대한 부모를 기록하는 리스트이다.여기서 4번노드의 경우 1,2,7번노드와 연결되어있는데, 1번노드는 4번노드의 부모노드이기 때문에 1번노드를 제외하고 기록
https://programmers.co.kr/learn/courses/30/lessons/42584스택/큐BFS큐를 사용하여 문제를 풀었다.핵심포인트는 가격이 떨어지지 않은 기간(초)를 구하는 것이다.3초 시점의 경우 1초 뒤에 가격이 떨어진다. 이는 가격이
https://programmers.co.kr/learn/courses/30/lessons/42748정렬문제를 잘 읽고 주어진 조건에만 천천히 따라가면 다음과 같은 풀이가 나온다.인덱스가 0부터 시작하는 부분에 유의하자.
https://programmers.co.kr/learn/courses/30/lessons/42746정렬처음에 모든 경우의 수때문에 순열을 생각했었다.(permutations함수)쓸 때부터 시간 초과될 것 같아서 꺼림칙했는데 역시나 테스트케이스만 통과하고 모조
https://www.acmicpc.net/problem/1758그리디주어진 식에서 최대 값이 나오려면 ㅁ-ㅁ에서 첫번째 ㅁ가 커야한다.그럴려면 내림차순으로 정렬 후 주어진 식에 맞게하면 된다.
https://www.acmicpc.net/problem/2109그리디우선순위큐만약 3개 대학, (1,1), (10,2), (10,2)과 같은 경우 출력값은 무엇인가?정답은 20이다. 리스트를 d값 기준으로 오름차순으로 정렬한다.순간순간 최소값을 구해줄수있는
https://www.acmicpc.net/problem/1389BFS각 친구와의 관계를 양방향으로 relation딕셔너리로 나타내었다.그리고 bfs함수를 통해 각 유저의 케빈 베이컨 수를 구한다.함수 실행 시마다 bacon리스트는 다음과 같다.0, 0, 2,
https://www.acmicpc.net/problem/2468브루트포스BFS처음에는 지나가면 0으로 바꾸어주었지만 여러번 그래프를 돌리는 거라 원본이 훼손되어 이를 훼손시키지 않고 방문한 좌표를 따로 기록해서 없을 경우에만 (if xx not in 리스트)
https://www.acmicpc.net/problem/10026BFS코드가 좀 지저분하다..기본적인 bfs알고리즘으로 풀었다.bfs함수로 R그룹 개수세주고, ..다 더한다.copy리스트는 G를 다 R로 바꾸어준 리스트이다.
https://www.acmicpc.net/problem/1461그리디가장 최소 걸음 수를 위해서는 우선 음수, 양수를 분리한다.그리고 마지막 책은 제자리에 놔둔 후 다시 0으로 돌아올 필요가 없기 때문에 절댓값으로 가장 큰 위치 책+M개의 책은 마지막에 가져
https://www.acmicpc.net/problem/1182브루트포스정수들 중에서 1개 원소로 만든 경우의 수, 2개 원소로 만든 경우의 수...N개 원소로 만든 경우의 수조합을 위해 combinations모듈을 사용했다.
https://programmers.co.kr/learn/courses/30/lessons/64061스택각 크레인 번호에서 위에서부터 0인지 아닌지 체크해서 0이 아니면 stack리스트에 넣어준다.리스트에 2개 이상 원소가 존재하면 뽑아내고 비교해서 같으면 c
https://www.acmicpc.net/problem/1987BFS탐색할 때, 갈 수 있는 여러 개의 길 중에서 끝까지 탐색했을 때 제일 최대값을 구하는 것이다.예를 들어, 3 4CABCDEFGKABC 의 경우에는 다음과 같다. 다만 이때 queue는 중복
https://www.acmicpc.net/problem/1759브루트포스주어진 문자들을 증가하는 순서로 배치하기 위해 우선 숫자로 바꿔준다.(num_alpha)\->0,2,8,18,19,22그리고 증가하는 순서로 배치하고 다시 알파벳으로 바꿔준다.\->'a'
https://www.acmicpc.net/problem/14500브루트포스완전 노가다 문제이다..각 도형마다 회전에서 나올 수 있는 좌표를 모두 적고,try, except를 이용했다.
https://www.acmicpc.net/problem/15686브루트포스
https://www.acmicpc.net/problem/10819브루트포스주어진 정수리스트를 permutations모듈로 순열을 계산한다.그리고 각 정수리스트마다 주어진 식을 계산하는 함수 실행.
https://www.acmicpc.net/problem/10974브루트포스1부터 n까지의 리스트를 가지고 모든 순열을 만들어준다.
https://www.acmicpc.net/problem/1057브루트포스김지민과 임한수의 번호가 둘이 만날 때까지 계속 올라온다고 하면라운드를 올라갈 때마다 저 식을 이용한다.ex) 8, 98 -> 4 -> 2 -> 1 -> 19 -> 5 -> 3 -> 2
https://www.acmicpc.net/problem/2589브루트포스BFSL의 위치마다 함수실행을 한다. 해당 함수에서는 그 L과 다른 위치의 L간의 거리중 최대값을 저장한다.(cnt)
https://www.acmicpc.net/problem/11508그리디괜히 밑에 힌트보다가 헷갈렸다.최소비용이 되려면 무료로 지불할 가장 싼 것이 최대한 비싼 물건이 되도록 하는 것이다.내림차순으로 정렬 후 3번째, 6번째... 마다 전체 합에서 빼주면 된다
https://www.acmicpc.net/problem/2210DFS브루트포스0,0부터 4,4까지 모든 시작점에서 dfs함수 실행.dfs함수는 만든 수의 길이가 6이 될때까지 인접해 있는 네 방향으로 다섯 번 이동하면서 숫자를 이어붙이게 된다.
https://www.acmicpc.net/problem/5014BFS시작점에서부터 시작해서 올라갈 수 있으면 올라가고 내려갈 수 있으면 내려간다.각각 횟수 값을 방문한 적이 없을 때만 visited에 넣어준다.ex)deque(3)0, 1, 0, 2, 0, 0
https://www.acmicpc.net/problem/1927우선순위큐최소힙구현을 위한 heapq모듈을 사용했다.x가 0이지만 힙이 비어있는 경우 0을 출력하고힙이 비어있지 않다면 최소값을 출력하고 제거한다.그냥 자연수라면 힙에 삽입한다.
https://www.acmicpc.net/problem/1967BFS기본 알고리즘은 다음과 같다.루트노드1번부터 모든 경로 중에서 최대값을 가지고 있는 노드 번호를 구한다.그리고 그 번호로부터 다시 최대값을 구하면 된다.tree딕셔너리를 나타내면 다음과 같다
https://www.acmicpc.net/problem/11279우선순위큐이 문제는 최소힙과 아주 유사한 문제이다.파이썬에서 제공하는 heapq모듈은 최소힙자료구조를 기반으로 한다.따라서 최대힙을 위해서는 -를 붙여서 집어넣고 빼낼땐 절대값으로 빼내주었다.힙
https://www.acmicpc.net/problem/11286우선순위큐우선 절댓값 기준으로 가장 작은 값부터 출력해야 하고, 그 값이 같을 경우 가장 작은 수를 출력해야 한다.힙을 튜플로 구성하여 첫 번째 원소(절댓값 기준)를 기준으로 정렬해야한다.(이후
https://www.acmicpc.net/problem/2075우선순위큐메모리 초과로 인해 pypy3로 제출하니 통과되었다.파이썬으로 통과하려면 입력받는것과 동시에 바로 처리를 해주어야 하는 것 같다.메모리 크기를 위해 n개가 넘어가면 최소값을 빼준다.그렇게
https://www.acmicpc.net/problem/12018그리디신청인원보다 수강인원이 많을 경우, 마일리지 1만큼 할당성준이의 마일리지가 모든 과목을 다 수강하고도 남는 경우 생각!그 이외에는 문제 조건에 따라 정렬을 통해 구현하였다.
최적 부분 구조큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제 해결중복되는 부분 문제동일한 작은 문제를 반복적으로 해결메모이제이션(탑다운) O(N)한 번 계산한 결과를 메모리 공간에 메모바텀업바텀업방식바텀업 방식 ex) 0, 1001, 1, 1
https://www.acmicpc.net/problem/17413구현tag가 시작된 경우는 정상적으로 출력하고 >를 만난 순간 tag=False를 통해 뒤집어서 출력해간다. 중간에 공백을 만나면 공백을 더한 값을 출력하고 word를 초기화시켜준다.
https://www.acmicpc.net/problem/1463다이나믹프로그래밍
https://www.acmicpc.net/problem/9095다이나믹프로그래밍di는 i를 만들기 위한 방법의 수d1=1 -> 1d2=1+1, 2 -> 2d3=1+1+1, 2+1, 3 -> 3d4=1+d3의 원소들, 2+d2의 원소들, 3+d1의 원소들...
https://www.acmicpc.net/problem/1003다이나믹 프로그래밍기본적인 다이나믹 프로그래밍 알고리즘 문제로 0, 1이 출력되는 횟수를 계속해서 누적해 더해나가면 된다.
https://www.acmicpc.net/problem/11726다이나믹프로그래밍세로의 크기는 2로 고정되어있기때문에 n이 늘어날수록 채우는 방법의 수가 어떻게 바뀌어가는지 살펴보면 된다.ex)1X2타일은 =, 2X1타일은 ㅣn=1 ㅣ -> 1개n=2 ㅣㅣ,
https://www.acmicpc.net/problem/2579다이나믹프로그래밍ex)d0=10d1=10+20=30d2=max(15+10, 15+20)=35d3=max(stairs3+d1, stairs3+stairs2+d0)=max(25+d1, 25+15+d0
https://www.acmicpc.net/problem/1932다이나믹프로그래밍하나씩 적어가면서 규칙을 찾았다.ex)d0=7d1=3+7, d1=8+7d2=8+d1, d2=1+max(d1,d1),d2=0+d1d3=2+d2, d3=7+max(d2,d2),d3=4
https://www.acmicpc.net/problem/11053다이나믹프로그래밍d0은 수열 A의 첫 번째 원소까지로 만든 부분수열 중 최대 길이를 저장한다.ex)i=2if 10<a2, if 20<a21, 2, 1, 1, 1, 11, 2, 1, 3
https://www.acmicpc.net/problem/2156다이나믹프로그래밍백준 2579 계단오르기 문제와 상당히 유사하다.차이점은 계단오르기는 마지막 계단을 꼭 밟고 끝나지만, 이 문제는 마지막 잔을 마시지 않을 수도 있다는 것이다.di는 i번째 포도주
https://www.acmicpc.net/problem/9251다이나믹 프로그래밍백준 11053 문제와 유사한 문제이다.너무 어렵다.. 차근차근 예시를 살펴보자.A C 0A CA 1A CAP 1A CAPC 1...AC C 1AC CA 1AC CAP 1AC C
https://www.acmicpc.net/problem/11054다이나믹프로그래밍원래의 수열에서 증가하는 수열 길이는 1,2,2,1,3,3,4,5,2,1,감소하는 수열 길이는 1,5,2,1,4,3,3,3,2,1이다.예시의 경우, 1,2,3,4,5 / 5,2,
https://www.acmicpc.net/problem/11055다이나믹 프로그래밍기본적인 구조는 가장 긴 부분 수열을 구하는 것과 비슷하다.di는 arrayi번까지의 증가 부분 수열의 합이다.예를 들어, 2,1,2과 같은 경우는 2,1,3이 나와야 한다.2
https://www.acmicpc.net/problem/2193다이나믹프로그래밍n에 따른 이친수를 나열하다보면 규칙이 피보나치 함수와 동일하다는 것을 알 수 있다.
https://programmers.co.kr/learn/courses/30/lessons/42576해시동명이인이 있을 수 있기 때문에 중복을 허용하지 않는 set자료형을 이용해 단순 차집합을 구해주는 방법은 오답이다.기본적인 논리는 다음과 같다. (시간초과)
https://programmers.co.kr/learn/courses/30/lessons/42586스택/큐입출력 예 몇 일 후에 배포되는지 저장한 days리스트는 (100-93)/1, (100-30)/30 ... 를 반올림한 값을 가진다.이후 배포는 먼저 배
https://programmers.co.kr/learn/courses/30/lessons/42583스택/큐다리길이만큼의 리스트를 생성해준다.1초가 지날 때마다 스택을 한 칸씩 왼쪽으로 미뤄준다.이때 이미 다리에 올라간 트럭의 무게와 다음에 올라갈 트럭의 무게
https://programmers.co.kr/learn/courses/30/lessons/42587스택/큐백준 1966번 프린터 큐와 동일한 문제이다.우선순위값과 인덱스를 같이 저장한 array리스트를 큐로 만들어준다.뒤에 리스트에 증요도가 높은 게 하나라도
https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3해시정렬을 하게 되면 119, 1195524421, 97674223 처럼 된다.이제 길이-1만큼 뒤의 번호와 비교하여 false,
https://programmers.co.kr/learn/courses/30/lessons/42578해시array는 각 의상의 종류에 따른 의상들을 가지고 있다.이를 활용해 lst는 종류 별 의상의 개수를 가지게 된다.ex) lst=1,2특정 종류의 옷을 항상
https://programmers.co.kr/learn/courses/30/lessons/42627우선순위큐처리한 작업 수(count), 최근 작업이 끝난 시간(last), 작업시간(time)우선순위 큐를 활용하였다. heap에 삽입할 때는 작업의 소요시간을
https://programmers.co.kr/learn/courses/30/lessons/42579해시sum_array는 array의 각 장르별 재생횟수 총합을 저장하는데 가장 총합이 큰 장르 순서대로 정렬해준다.그리고 각 장르별로 재생횟수 내림차순으로 정렬
https://programmers.co.kr/learn/courses/30/lessons/42747정렬H_Index계산법에 대한 이해부터 필요하다.예를 들어 array=10,8,5,4,3일 경우 인덱스는 1,2,3,4,5이다. 이때 10>=1, 8>=2, 5
https://programmers.co.kr/learn/courses/30/lessons/43105다이나믹프로그래밍백준 1932 정수 삼각형과 동일한 문제이다.규칙을 찾으면 쉽게 접근이 가능하다.
https://programmers.co.kr/learn/courses/30/lessons/42840브루트포스correct리스트는 각각의 수포자가 맞춘 문제 수를 저장한다.해당 문제 수와 수포자를 함께 저장하고 문제를 많이 맞힌 순서대로 내림차순 정렬한다.그리
https://programmers.co.kr/learn/courses/30/lessons/42839브루트포스입력받은 numbers에서 각 글자를 분리해서 순열리스트를 만들어준다.그리고 순열리스트에서 문자열을 합쳐주고 다 합쳐지면 정수형으로 lst에 넘겨주었다
https://programmers.co.kr/learn/courses/30/lessons/42842브루트포스yellow를 1부터 나눠보면서 나누어 떨어지는 수로 (yellow//i+i)\*2+4가 brown을 만족하는 가로, 세로 길이에 각각 +2씩 해주면
https://programmers.co.kr/learn/courses/30/lessons/43165BFSnumbers=1,2,3일 경우각 숫자를 가지고 만든 array 출력값은 다음과 같다.1, -13, -1, 1, -36, 0, 2, -4, 4, -2, 0
https://programmers.co.kr/learn/courses/30/lessons/43162BFS입력받는 computers리스트를 백준에서 주로 풀던 그래프 딕셔너리로 변환시켜주었다. (예제그리고 bfs함수를 통해 아직 방문하지 않은 컴퓨터면 이어져있
https://programmers.co.kr/learn/courses/30/lessons/43163BFSgraph딕셔너리에 begin부터시작해서 words의 단어별까지 몇단계의 과정을 거치는 지 카운트한 값을 저장한다.ex)now="hit, word="hot
https://programmers.co.kr/learn/courses/30/lessons/42628우선순위큐난이도가 3단계여서 겁먹고 최소힙, 최대힙 두개만들어서 별짓다했는데 이렇게 풀어도 시간초과가 발생하지 않는다..(테스트케이스가 많이 부족해보인다.)
https://programmers.co.kr/learn/courses/30/lessons/42860그리디프로그래머스 내부에서도 논란이 많은(?) 문제이다.상하로 움직여 최소로 알파벳을 조정하고, 좌우로 움직여 최소로 바꿀 알파벳 위치를 정하는 것 두 가지를
https://programmers.co.kr/learn/courses/30/lessons/42883그리디 def solution(number, k): from itertools import combinations핵심 아이디어는 앞자리를 최고 큰 수
https://programmers.co.kr/learn/courses/30/lessons/42898다이나믹프로그래밍 def solution(m, n, puddles): from collections import deque dx=1,0 dy=0,1 k
https://programmers.co.kr/learn/courses/30/lessons/43164DFS def solution(tickets): from collections import deque key_list=\[] graph={i0:\[] f
https://programmers.co.kr/learn/courses/30/lessons/42885그리디구명보트는 한 번에 최대 2명까지 밖에 탈 수 없다는 것이 핵심이다.people을 내림차순으로 정렬하고 가장 몸무게가 큰 사람과 제일 작은 사람과 비교해서
https://programmers.co.kr/learn/courses/30/lessons/68644조합combinations함수를 이용해 두 개의 수를 뽑은 리스트를 구해주고 해당 리스트에서 set자료형을 통해 중복을 제거해주고 오름차순 리스트로 반환해주면
https://programmers.co.kr/learn/courses/30/lessons/72410구현복잡하지만 차근차근 1단계부터 7단계까지 구현해주었다.다만 "3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
https://programmers.co.kr/learn/courses/30/lessons/12901구현규칙을 찾아 조건에 따라 구현하면 된다!
https://programmers.co.kr/learn/courses/30/lessons/68935구현논리는 동일하지만 코드2가 훨씬 간단하다.예를 들어, 45가 0이 될 때까지 나머지연산을 반복하면 0021이 된다.이를 3진법 정수로 바꿔주면 정답이다.코드
https://programmers.co.kr/learn/courses/30/lessons/12903구현단어의 길이가 짝수일 때, 홀수일 때 나눠서 가운데 두글자를 반환하면 되는 간단한 문제이다.
https://programmers.co.kr/learn/courses/30/lessons/62048?language=python3구현최대공약수를 생각해야 하는 문제다.w,h가 서로소가 아니라면 최대공약수로 w,h를 나눠 축소시킬 수 있다.8,12=2,3이 4
https://programmers.co.kr/learn/courses/30/lessons/49993문자열스킬트리의 경우의 수 각각을 check_possible함수로 가능한 스킬트리인지 판단한다.해당 함수 로직은 다음과 같다.ex) 1. BACDE에서 B는 s
https://programmers.co.kr/learn/courses/30/lessons/59034?language=mysqlSELECT문의 기본 문법이다. ORDER BY로 ANIMAL_ID를 기준으로 오름차순 정렬한다.
https://programmers.co.kr/learn/courses/30/lessons/59415두 가지 코드 모두 가능하다.https://programmers.co.kr/learn/courses/30/lessons/59038두 가지 코드 모두 가
https://programmers.co.kr/learn/courses/30/lessons/12906?language=python3집어넣으려고 하는 수와 이전 수와 같지 않은 경우만 result리스트에 삽입한다.
https://programmers.co.kr/learn/courses/30/lessons/12910문제에 주어진 대로 구현을 바르게 하면 된다!
https://programmers.co.kr/learn/courses/30/lessons/12899주어진 숫자를 3으로 나눈 나머지가 1,2,0에 따라 맨 끝자리가 1,2,4를 가지게 된다.n=4,5,6의 경우 각각 몫은 1,1,2를 가진다.기본 로직은 3으
https://programmers.co.kr/learn/courses/30/lessons/60057브루트포스cut은 문자열을 자르는 단위 개수를 의미하고 1부터 문자열의 절반까지 가능하다.temp로 초기 비교값을 가지며, 문자열 전체를 정한 cut단위로 반복
https://programmers.co.kr/learn/courses/30/lessons/68645삼각형방식으로 값을 채워갈 때 경우의 수가 아래로 가는 경우, 우측으로 가는 경우, 위로 가는 경우총 3가지로 나누어진다.아래로 가는 경우는 3으로 나눈 나머지
https://programmers.co.kr/learn/courses/30/lessons/59040고양이와 개가 각각 몇 마리인지 조회하기 위해 ANIMAL_TYPE으로 그룹화한다.그리고 고양이를 개보다 먼저 조회하기 위해 오름차순 정렬해준다.https&#x
https://programmers.co.kr/learn/courses/30/lessons/59039이름이 NULL인 경우에 대해서 ID 오름차순으로 정렬해 조회하면 된다.https://programmers.co.kr/learn/courses/30/l
![](https://images.v
https://www.acmicpc.net/problem/1520DFSDP(다이나믹프로그래밍)이번 NTS코테 2번과 유사한 문제인데 나한테는 상당히 어렵다...예제에서 만약 50에서 17까지의 갈 수 있는 경로의 수는 17의 상하좌우 중 17보다 큰 20,25
https://www.acmicpc.net/problem/2748다이나믹프로그래밍두 가지 방법으로 해결가능하다.코드1 : 탑다운 방식(메모이제이션)한 번 계산한 결과를 메모리 공간에 메모코드2 : 바텀업 방식코드1코드2
https://programmers.co.kr/learn/courses/30/lessons/67256구현숫자를 왼손 엄지손가락으로 누른 경우 L 추가와 함께 그 숫자의 인덱스(left)를 계속해서 갱신해준다.오른손으로 누른 경우 마찬가지이다.거리를 계산해서 가
https://programmers.co.kr/learn/courses/30/lessons/60058구현(문자열)문제를 이해하는데 좀 어려웠다.seperate함수는 해당 문자열을 u,v형태로 분리해주기 위함이고, correct함수는 올바른 괄호 문자열인지 아닌
https://programmers.co.kr/learn/courses/30/lessons/72411처음에는 다음과 같이 접근했다.orders에 포함된 알파벳들중 course에 따른 조합을 구해주고 해당 조합의 값마다 check함수를 돌려주었다. check함수
https://leetcode.com/problems/coin-change/다이나믹 프로그래밍틀린코드처음에 단순하게 기존 백준의 유사한 문제처럼 풀다가 틀렸다..아이디어는 동적프로그래밍 알고리즘에서 나온다.di는 i원을 만드는데 필요한 동전의 최소 개수이다.
https://programmers.co.kr/learn/courses/30/lessons/12912간단한 구현문제이다.
https://programmers.co.kr/learn/courses/30/lessons/68936예 배열 arr의 길이는 4이다. 처음엔 0,0부터 4,4까지 같은 값인지를 확인한다. 같은 경우 result에서 그 값을 +1해준다.다르다면 총 4개의 사각형
https://programmers.co.kr/learn/courses/30/lessons/12915주어진 조건을 만족하기 위해 딕셔너리를 활용하였다.예 2의 경우, 정렬을 조건대로 해준 딕셔너리 결과는 다음과 같다. {'c': 'abcd', 'abce', '
https://programmers.co.kr/learn/courses/30/lessons/1845조합을 구해서 풀이 시 시간초과가 발생한다.예를 들어 nums=3,1,2,3의 경우 set자료형으로 변환해주면 1,2,3을 가진다. 이때 N=4이므로 최대 2개까
https://programmers.co.kr/learn/courses/30/lessons/64065{,}를 start,end로서 받아, 문자열 "{{2},{2,1},{2,1,3},{2,1,3,4}}"에서 길이를 기준으로 오름차순해서 array='2', '2,
https://programmers.co.kr/learn/courses/30/lessons/12909스택/큐카카오 문제중에 유사한 문제가 있었던 것 같다.스택 자료구조를 활용해 조건에 따라 작성해주었다.더 간단한 코드
https://programmers.co.kr/learn/courses/30/lessons/12916간단한 문제였다.프로그래머스에서 찾은 더 간단한 코드는 문자열을 소문자로 다 바꿔주고 각각 p와 y개수를 구해, 바로 리턴해주었다.더 간단한 코드
https://programmers.co.kr/learn/courses/30/lessons/1291110진수에서 2진수로 바꾸는 방법은 다음과 같다.주어진 숫자 n을 2진수로 변환해 1의 개수를 구해주고 n을 증가시키면서 1의 개수가 동일한 숫자를 찾아주면 된
https://programmers.co.kr/learn/courses/30/lessons/12900다이나믹프로그래밍백준에도 똑같은 문제가 있는 것으로 기억한다.다이나믹프로그래밍 알고리즘을 적용해서 규칙을 찾아 적용해주면 된다.이외에 변수 a,b만 사용해서 원
https://programmers.co.kr/learn/courses/30/lessons/12913다이나믹프로그래밍처음 생각은 '각 행에서 내려올 때마다 최대값을 구해서 더해가면 되나?'였다.그러나 그럴 경우 1|2|3|4,5|6|7|10이런 식이라면 5+7
https://programmers.co.kr/learn/courses/30/lessons/1844BFS백준에서 많이 연습했던 전형적인 BFS문제였다.\[1, 0, 1, 1, 1, 2, 0, 1, 0, 1, 3, 0, 1, 1, 1, 1, 1, 1, 0, 1,
https://programmers.co.kr/learn/courses/30/lessons/12978BFS처음엔 방문한 노드를 저장하는 visited리스트를 사용해 방문했냐 안했냐를 확인해서 탐색했다. 그러나 이럴 경우 나중에 돌아서 방문하는 경우가 더 빠를수
https://programmers.co.kr/learn/courses/30/lessons/12977소수를 찾는 check함수를 별도로 정의하고 리스트 중 3개를 뽑는 조합을 구해 check함수가 True인지 확인해주었다.처음엔 같은 sum을 중복제거처리를 해
https://programmers.co.kr/learn/courses/30/lessons/12982금액을 오름차순으로 정렬하고 하나씩 더해가 budget과 비교했다.
https://programmers.co.kr/learn/courses/30/lessons/12981크게 두 가지의 조건을 생각해야한다.1\. 끝말잇기 규칙을 성립해야한다. (never->now는 X)2\. 나왔던 단어가 또 나오면 안된다. (tank 2번)입
https://programmers.co.kr/learn/courses/30/lessons/12980왜 2단계인지 모르겠지만(?) 주어진 N부터 거꾸로 짝수면 2로 나누고, 홀수면 1만큼 빼고 건전지 사용량+1을 해주었다.더 간단한 코드의 경우 프로그래머스에서
https://programmers.co.kr/learn/courses/30/lessons/49994생각의 흐름대로 풀어, 코드가 좀 지저분한 것 같지만 논리는 다음과 같다.0,0에서 시작해서 각 방향에 따라 해당하는 좌표가 그래프를 넘어가는지 확인하고 안넘어
https://programmers.co.kr/learn/courses/30/lessons/12924예를 들어 n=15일 때1,2,3,4,5=152,3,4,5,6=X3,4,5,6=X4,5,6=155..=X6..=X7,8=15와 같은 방식으로 반복문을 수행한다.
https://programmers.co.kr/learn/courses/30/lessons/70129문자열 s가 "1"이 될때까지 반복문을 수행한다.반복문이 돌때마다 cnt+1을 해주고, 0의 개수를 더해준다. 그리고 문자열을 1의 길이를 2진수로 변환한 문자
https://programmers.co.kr/learn/courses/30/lessons/12939공백으로 구분한 리스트를 만들고 해당 리스트에서 최솟값과 최댓값을 리턴해주면 정답이다.(이게 왜 2단계일까..?)
https://programmers.co.kr/learn/courses/30/lessons/129411,2, 3,4의 경우 A의 가장 작은 값과 B의 가장 큰 값끼리 곱해가면 정답이다.(이것도 레벨2..?)
https://programmers.co.kr/learn/courses/30/lessons/12945기본적인 피보나치 수의 알고리즘이다.
https://programmers.co.kr/learn/courses/30/lessons/12949행렬의 곱셈법칙을 알아야 한다.예시 2의 경우 (2x5,3x2,2x3)(2x4,3x4,2x1)(2x3,3x1,2x1),\[],\[]...식으로 구성된다.즉, r
https://programmers.co.kr/learn/courses/30/lessons/67257스택레벨 3보다 어려웠다..;\+,-,\* 3가지 연산자의 경우의 수에 따라 calculate함수를 수행했다.calculate함수는 수식과 연산자를 받아 +,-
https://programmers.co.kr/learn/courses/30/lessons/12951처음에 단순하게 접근했는데 공백이 두개이상 있는 경우를 생각못했다.가장 먼저 소문자로 전체를 바꿔주고, 문자열을 차례대로 살펴본다.해당 문자가 공백일 경우 ch
https://programmers.co.kr/learn/courses/30/lessons/12953arr의 최댓값을 기준으로 x1, x2, x3... 씩 곱해가면서 각 경우마다 arr를 돌며 최소공배수가 성립하는지 확인하였다.
ex) "AAbbaa_AA", " BBB"make함수는 문자열을 두 글자씩 끊어서 다중집합을 만드는 함수이다.str1_array='aa', 'ab', 'bb', 'ba', 'aa', 'aa'str2_array='bb', 'bb'이때 알파벳이 아닌 문자가 포함된 원소는
https://programmers.co.kr/learn/courses/30/lessons/12973스택/큐어찌 풀긴했는데 코드를 보다시피 복잡하다..ㅎ기본 논리는 스택을 기본으로 해서 index를 조절해서 문제의 조건에 맞게 짝지어서 제거하는 논리를 수행하였