[다이나믹 프로그래밍] 프로그래머스_정수 삼각형
·
코딩 테스트 일지 📒
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 ..
[다이나믹 프로그래밍] 1로 만들기
·
코딩 테스트 일지 📒
아래 영상 36:35초 문제입니다.https://www.youtube.com/watch?v=5Lu34WIx2Us&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=6import sysinput=sys.stdin.readlinex=int(input())#x가 5로 나누어 떨어지면, 5로 나누기#x가 3으로 나누어 떨어지면, 3으로 나누기#x가 2로 나누어 떨어지면, 2로 나누기#그 외의 경우, x에서 1빼기#연산 횟수를 최소화하며 1 만들기#아이디어 : 그리디가 아니기 때문에 무조건 나눈다고 연산이 줄어드는 게 아님#점화식 : 최소 연산 횟수 = min(i를 4가지 연산을 하여 나온 각각의 값)+1#1을 더하는 이유 : 하나의 연산이 수행된 것이기 때문#dp 테이블 초기화d..
[다이나믹 프로그래밍] list를 value로 갖는 dict 생성하기, enumerate() 함수, dict 첫 번째 key, value 가져오기 + 개미전사
·
코딩 테스트 일지 📒
list를 value로 갖는 dict 생성하기dicts={}for i in range(len(lists)): #key = value dicts[i]=lists[i]위 코드를 통해 리스트의 각 원소를 value로, 각 원소의 인덱스를 key로 가지는 딕셔너리를 만들 수 있습니다.여기서 len(lists)를 대체할 수 있는 함수가 있는데요!바로 enumerate입니다.dicts={}for i in enumerate(lists): #key = value dicts[i]=lists[i]enumerate() 함수는 반복 가능한 객체(예: 리스트)를 입력으로 받아 각 요소와 해당하는 인덱스를 포함하는 이터레이터를 반환합니다. 이렇게 함으로써 코드를 더 간결하게 작성할 수 있습니다.여기서 enumerate()..
[DFS] 백준_양 한마리... 양 두마리...
·
코딩 테스트 일지 📒
문제얼마전에 나는 불면증에 시달렸지... 천장이 뚫어져라 뜬 눈으로 밤을 지새우곤 했었지.  그러던 어느 날 내 친구 광민이에게 나의 불면증에 대해 말했더니 이렇게 말하더군. "양이라도 세봐!"  정말 도움이 안되는 친구라고 생각했었지. 그런데 막상 또 다시 잠을 청해보려고 침대에 눕고 보니 양을 세고 있더군... 그런데 양을 세다보니 이걸로 프로그램을 하나 짜볼 수 있겠단 생각이 들더군 후후후... 그렇게 나는 침대에서 일어나 컴퓨터 앞으로 향했지.양을 # 으로 나타내고 . 으로 풀을 표현하는 거야. 서로 다른 # 두 개 이상이 붙어있다면 한 무리의 양들이 있는거지. 그래... 좋았어..! 이걸로 초원에서 풀을 뜯고 있는 양들을 그리드로 표현해 보는거야!그렇게 나는 양들을 그리드로 표현하고 나니까 갑자..
[그리디] 백준_흙길 보수하기
·
코딩 테스트 일지 📒
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N(1 ≤ N ≤ 10,000)개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이가 L(1 ≤ L ≤ 1,000,000)인 널빤지들을 충분히 가지고 있어서, 이들로 다리를 만들어 물웅덩이들을 모두 덮으려고 한다. 물웅덩이들의 위치와 크기에 대한 정보가 주어질 때, 모든 물웅덩이들을 덮기 위해 필요한 널빤지들의 최소 개수를 구하여라.입력 예3 31 613 178 12첫째 줄에 두 정수 N과 L이 들어온다.둘째 줄부터 N+1번째 줄까지 총 N개의 줄에 각각의 웅덩이들의 정보가 주어진다. 웅덩이의 정보는 웅덩이의 시작 위치와 끝 위치로 이루어진다. 각 위치는 0 이상 1,000,000,000 이하의 정수이다..
[구현] 백준 5430_AC
·
코딩 테스트 일지 📒
https://www.acmicpc.net/problem/5430 5430번: AC각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.www.acmicpc.net선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "..
[DFS] 백준_양치기 꿍
·
코딩 테스트 일지 📒
https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다.www.acmicpc.net사이클을 찾아야하는 문제이니 DFS를 사용했습니다.어떤 범위(울티리 안, 미로 공간) 안에서 개수 찾는 문제는 DFS를 통해 구현하고, 최단거리(최단경로)를 구해야하는 문제는 BFS를 이용하여 구현하고 있습니다.재귀적으로 구현하였는데, 이때 sys.setrecursionlimit 함수를 통해 재귀한도를 지정하지 않으면 런타임에러가 뜨니 주의하셔야 합니다!DFS 구현 방식은 다음과 같습니다...
[그리디] 백준_30
·
코딩 테스트 일지 📒
https://www.acmicpc.net/problem/10610 10610번: 30어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한www.acmicpc.net이 문제를 보고 처음 든 30의 배수임을 확인하는 방법은 다음과 같다.아이디어: 모든 문자 조합 만들기 -> 30으로 나눠서 떨어지는지 확인 -> 제일 큰 지 확인... 그리디?그리디 문제인데 위와 같이 구하면 무조건 시간 초과가 날 거 같아 30의 배수임을 확인하는 다른 방법을 생각해 봤다.아이디어 30의 배수는 3과 10의 배수이어야 함. 10의 배수이려면 끝자리가 0이어야 함.3의 배수이려면 각 자..
[이진탐색] 백준_파닭파닭
·
코딩 테스트 일지 📒
https://www.acmicpc.net/problem/14627 14627번: 파닭파닭첫째 줄에 승균이가 시장에서 사 온 파의 개수 S(1 ≤ S ≤ 1,000,000), 그리고 주문받은 파닭의 수 C(1 ≤ C ≤ 1,000,000)가 입력된다. 파의 개수는 항상 파닭의 수를 넘지 않는다. (S ≤ C) 그 후, S 줄에www.acmicpc.net이 문제를 풀기 위한 아이디어는 이진탐색범위와 탐색기준을 제대로 설정하는 것입니다!이진탐색범위 : 파의 길이 1~가장긴파의길이 이진탐색기준 : mid길이로 잘랐을 때 파닭의 수가 padack_cnt보다 크면, mid를 더 크게 잘라서 파닭의 수를 줄여야하므로 오른쪽탐색(start=mid+1), mid길이로 잘랐을 때 파닭의 수가 padack_cnt보다 작으..
[DFS] 백준_적록색약 + sys.setRecursion, sys.stdin.readline, rstrip
·
코딩 테스트 일지 📒
https://www.acmicpc.net/problem/10026 10026번: 적록색약적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)www.acmicpc.net이 문제는 사이클을 확인해서 구역의 개수를 세는 문제이기 때문에 DFS가 적합합니다.DFS와 BFS 문제를 구분하는 방법은 아래 글에서 자세히 설명해두었습니다!https://blu-blu.tistory.com/5 [DFS & BFS] 음료수 얼려먹기 + 2차원 리스트 생성 및 입력 방법2차원 리스트 생성 및 입력 방법 0. 0으로 채워진 2차원 리스트 생성하기 my_list = [[0 for _..
코양이🤍
'알고리즘' 태그의 글 목록 (2 Page)