Algorithm 179

[PCCP 기출문제] 3번 / 충돌위험 찾기

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이우선 시작지점과 거쳐야하는 지점을 구한다.증가하는 시간을 인덱스로 두고 이동하는 좌표들을 dict에 모두 저장한다.이 때 r좌표의 이동을 c좌표보다 우선한다는 조건에 따라 사방탐색이 아닌 [r, c]의 값을 따로 이동시켜야하는 것이 핵심이다.이동을 마쳤다면 dict에서 같은 시간에 같은 경로를 방문한 케이스가 있는지 확인하여 있다면, answer을 증가시킨다.defaultdict✅ 일반 딕셔너리는 key가 없을 때 오류가 나지만, defaultdict는 key가 없으면 자동으로 기본값을 만들어준다.→ key가 없는데도 path[1]에 바로 ...

[Python] 프로그래머스 코드 챌린지 택배 상자 꺼내기

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이1. 상자를 쌓기 위한 높이 계산모듈러 연산 후 나머지가 있으면 한 줄 더 쌓아야 하므로 +1을 추가2. 배열 채우기최종 상자의 개수 n이 될 때까지 배열을 채운다.n보다 커지면 0으로 유지 → 상자를 꺼낼 때 연산하기 쉽게 하기 위함짝수 번째 줄은 반대로 쌓아야 하므로 reverse() 함수 사용3. 상자 꺼내기맨 윗칸이 비어 있으면 동작이 한 번 덜 수행되므로 -1즉, 맨 윗칸이 0이면 비어 있는 것맨 윗칸이 0이 아니면 비어 있지 않으므로→ 전체 높이에서 상자가 있는 열의 크기를 빼준다.코드def solution(n, w, num): ..

[Python] 프로그래머스 PCCP 기출문제 1번 / 동영상 재생기

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이문제를 따라 구현하면 되는 단순 구현 문제이나, 오프닝 구간 처리에 신경써야한다.동영상을 재생하기 전 오프닝 구간에 있다면 오프닝이 끝나는 구간으로 이동 후 연산을 시작해야하고, 모든 연산을 마친 후, 오프닝 구간 체크구현 완료 후 출력 전 한자리 숫자인 경우 앞에 0을 채우기 위해 zfill 함수를 사용하여 출력 형식 변환문제 상황✅ 올바른 오프닝 구간 처리를 위해 고려해야 할 사항현재 시간이 오프닝 구간에 포함되어 있다면, 오프닝이 끝나는 시간으로 이동해야 한다.오프닝이 시작하는 분과 끝나는 분이 같지 않을 경우도 명확하게 체크해야 한다.단..

[Python/C++] 백준 10819번 차이를 최대로

문제N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오.|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|입력첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.출력첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.입력 예제620 1 15 8 4 10출력 예제62문제 풀이n크기의 순열을 저장할 리스트를 만들어 연산을 시행할 인덱스 정보를 저장idx == n 조건에서 새로운 순열이 만들어지면 주어진 연산을 수..

[Python] 백준 9082번 지뢰찾기

문제https://www.acmicpc.net/problem/9082입력입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 첫 줄에 배열의 크기 N(1 ≤ N ≤ 100)이 주어지고, 그 다음 두 줄에 걸쳐서 배열이 주어진다. 첫 줄에는 항상 숫자만이 나타나며 이 숫자들 사이에 공백은 없으며, 둘째 줄에 주어지는 입력들 사이에도 공백은 없다. 그리고 이 숫자들은 올바른 값만이 입력으로 들어온다(지뢰의 위치에 대해 불가능한 값은 입력으로 주지 않는다).출력각 테스트 케이스에 대해서 주어진 배열에 있는 모든 지뢰의 수를 한 줄에 하나씩 출력한다. 지뢰의 수가 여럿이 될 수 있으면 가능한 지뢰의 수 중 최댓값을 출력한다.입력 예제2511122####*523321##..

Algorithm/Greedy 2024.10.17

[Python] 백준 31649번 Milk Exchange

문제https://www.acmicpc.net/problem/31649입력The first line contains N and M.The second line contains a string s1s2…sNs_1s_2\ldots s_Ns1​s2​…sN​ consisting solely of the characters ‘L’ or ‘R’, denoting the direction each cow will pass their milk in.The third line contains integers a1,a2,…,aNa_1, a_2, \ldots, a_Na1​,a2​,…,aN​, the capacities of each bucket.출력Output an integer, the sum of milk among a..

[Python] 백준 2493번 탑

문제https://www.acmicpc.net/problem/2493입력첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 이상 100,000,000 이하의 정수이다.출력첫째 줄에 주어진 탑들의 순서대로 각각의 탑들에서 발사한 레이저 신호를 수신한 탑들의 번호를 하나의 빈칸을 사이에 두고 출력한다. 만약 레이저 신호를 수신하는 탑이 존재하지 않으면 0을 출력한다.입력 예제56 9 5 7 4출력 예제0 0 2 2 4문제 풀이완탐을 진행하면 시간초과가 발생하므로 stack을 사용하여 풀이해야한다.stack을 생성해서 0번째 인덱스를 넣는다.이후 stack에 ..

[Python] 백준 31650번 Maximizing Productivity

문제https://www.acmicpc.net/problem/31650입력The first line consists of N and Q.The second line consists of  c_1, c_2, c_3, ..., c_N (1 ≤ c_i ≤ 10^6).The third line consists of t_1, t_2, t_3, ..., t_N (1 ≤ t_i ≤ 10^6).The next Q lines each consist of two integers V (1 ≤ V ≤ N) and S (1 ≤ S ≤ 10^6).출력For each of the Q queries, output YES or NO on a new line.입력 예제5 53 5 7 9 124 2 3 3 81 51 63 34 25 1출..

Algorithm/Sort 2024.10.05

[Python] 백준 14719번 빗물

문제https://www.acmicpc.net/problem/14719입력첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500)두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다.따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다.출력2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라.빗물이 전혀 고이지 않을 경우 0을 출력하여라.문제 풀이물이 고이는 조건양 옆에 자신보다 높은 크기의 블럭이 존재해야한다.물이 고이는 경우 더 작은 크기의 블럭의 크기만큼 빗물이 고인다.더 작은 블럭의 크기 - 현재 ..

[Python] 백준 12919 A와B 2

문제https://www.acmicpc.net/problem/12919입력첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 49, 2 ≤ T의 길이 ≤ 50, S의 길이 출력S를 T로 바꿀 수 있으면 1을 없으면 0을 출력한다.입력 예제ABABABAAAAABAABAABAAAAABAABBA출력 예제110문제 풀이s -> t가 가능한지 탐색한다면 모든 경우의 수를 탐색하게 되므로 시간초과가 발생한다. 따라서 t -> s가 가능한지 문자를 삭제해가며 탐색해야한다.탐색하는 방법도 아래와 같이 뒤집어줘야한다.A를 추가한다 -> A를 삭제한다.맨 뒤에 있는 A를 삭제하기 위해 아래와 같이 인덱스 슬라이싱을 진행한다.result[:-1]B를 추가하고 뒤집는다 -> 뒤집은 후 B를 삭제한다.B를 추가하..