목록알고리즘 PS (108)
DevKim
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr [ 알고리즘 ] BFS [ 접근 방법 ] * 조건 * 1. 벽이 없는 경우에 2. 맨해튼 ..
https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr [ 알고리즘 ] 힙 큐 알고리즘 [ 접근 방법 ] 최대힙과 최소힙 두개를 써서 해결하느냐, 최소힙 하나로 해결하느냐로 결정되는 문제이다. 최소힙에서 최대값을 pop할 수 없으니 다른 방법으로 생각을 해봐야한다. 그렇다고 Level.03 문제인데 힙을 2개를 써서 무식하게 풀라고 낸 문제는 아닌 것 같았다. 해답은 heapq.nsmallest에 있다. heapq.nsmallest(n,iterable) 을 사용하여 가장 최대인 값을 제외하고 최소인 것들로 다시 힙을 만들어주면된다. 백트래킹 풀다가 이 문제를 보니 너무 사랑스러울 지경이다 ㅎ ..
https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net [ 알고리즘 ] 단순구현 [ 접근 방법 ] 역시 삼성 문제는 문제 이해가 최우선이다. 조건이 복잡하고 길고 조건이 왔다갔다해서 조건 하나라도 빼먹으면 무한 디버깅에 빠지게 된다 (=나^^) 이 문제는 이동하는걸 어렵게 생각해서 시간을 많이 잡아먹었다. (x,y) 라고 놓고 생각하면 x가 음수방향으로 움직일 때, 양수방향일 때.. 생각으로 빠지게된다. 각 행과 열을 연결했으므로 동그랗게 연결..
https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr [ 알고리즘 ] 단순구현 [문제 접근] 문제가 어렵다기보단, 일일이 비교하면 시간초과가 나는 문제이다. 처음엔 1씩 더해서 각각의 이진수를 구하고, 끝자리부터 한자리씩 더해나가며 해결하려고 했으나 그렇게 되면 시간복잡도가 어마어마하게 커지게 된다. 이 문제는 짝수와 홀수를 나눠서 생각 할 필요가 있다. (1) 짝수 case 짝수의 경우 2진법으로 바꾸면, 무조건 끝에 0이 오게되어있다. 1~2자리수만 다르면 되므로, 맨 끝에 0을 1로만 바꿔주면된다. (2) 홀수 case 홀수의 경우 7=111 이런 경우를 대비하여, 맨 앞에 0..
https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr [ 알고리즘 ] 단순구현 [문제 접근] 문제를 보자마자 사각형을 기준으로 회전한다는 점에서, 삼성 기출 로봇청소기가 생각났다. 시작하는 행과 열의 기준을 정해주고 그 만큼 사각형을 회전해주면 된다. 매번 회전에 해당하는 숫자들을 리스트에 담아주고, 그 중의 최소값을 결과값에 담아주면 된다. [코드] def solution(rows, column..
https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr Spring 공부한다고 잠시 놓고 있었던 1일 1 PS를 다시 시작했다. 그저께 부터 시작이었는데.. 삼성 기출을 3번은 돌리고 싶어서 이전에 풀지 않았던 문제들 풀려고 했다가 머리 털 다 뽑히고 한문제 겨우 풀어냈다.. 하하! 삼성 기출은 정말 어렵다 ㅠㅠ 한달 뒤에 나는 잘 풀어낼 수 있는 실력을 가졌으면 하는 바람.. 그래서 오늘은 프로그래머스 2단계에 새로운 문제들이 추가됐길래 가볍게 풀어보았다. [ 알고리즘 ] 단순구현 [ 자료구조 ] 큐,스택 [문제 접근] 말은 뭔가 복잡하게 써놨지만, 그냥 단순히 모두가 알고있는 올바른 괄호 ..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net [ 알고리즘 ] DP [ 문제 접근 ] ▶ 완전탐색의 구조인데? 경우의 수가 너무 큰데? 메모이제이션 가능하다 ! 매번 최대를 구해야하는 겹치는 부분문제 = DP 01. 입력 7 ->tri[0][0] 3 8 -> tri[1][0], tri[1][1] 8 1 0 -> tri[2][0] ,tri[2][1],tri[2][2] 2 7 4 4 ... 4 5 2 6 5 ... 02. 상태값 n행의 m열 -> dp[n][m] 03. 조건 1. tri[n][m] 이 해당 줄의 시작일..
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net [ 자료구조 ] 스택 [ 접근 방법 ] 나와야하는 target 숫자까지 모두 스택에 push해주고 target 숫자를 pop하여 꺼내준다. 만약 현재 target의 숫자가 이 전의 target 보다 작은 경우, 한번 pop해주었을 때 해당 값이 나오면 계속 진행하고 그렇지 않으면 불가능한 경우이므로 NO를 출력하고 ..