코딩테스트 57

[DFS/BFS] (프로그래머스) 블록 이동하기 - 파이썬

링크: https://school.programmers.co.kr/learn/courses/30/lessons/60063✅ 벽을 1로 두르는 방식 => 시작좌표:(1,1), 끝좌표:(N,N)으로 됨 유의✅ visited를 set()으로 해야 조회 시간복잡도 O(1)✅ 모든 회전가능성을 염두에 두기 (안그럼 풀이시간 엄청 소요되버림)from collections import dequedef solution(board): N = len(board) new_board = [[1]*(N+2) for _ in range(N+2)] for i in range(N): for j in range(N): new_board[i+1][j+1]=board[i][j] ..

[DFS/BFS] (백준) 인구이동 - 파이썬

✅ 쓸데없는 checked함수를 만들었음 => DFS에서 이동이 일어났는지를 moved로 flag를 만들고 이후 이동이 없으면 끝내는 방식을 써야함 / checked함수만든이유? 확인은 해야한다고 생각해서 만들었는데 DFS에서 확인할 수 있다는 걸 놓친것 같음. 어떤 과정이 다른 과정에 포함될 수 있는지를 한번 더 생각해보자✅ path에 처음 자기자신이 포함이 되어야한다는 점과 그래서 이동이 일어나면 길이가 1보다 커야한다는 점을 놓침 => 자기자신도 넣어야하는 경우와 해당 기능과 연관된 기능을 한번 더 꼼꼼히 살펴보자✅ DFS에서 재귀오류가뜸 => stack을 활용하거나 BFS를 사용하거나하면됨. stack으로 DFS를 구현할 수 있다는 점이 신기했음✅ 예시가 하나밖에 없을때 얼른 하나 만들어서 확인해..

[DFS/BFS] 괄호변환 - 파이썬

링크: https://school.programmers.co.kr/learn/courses/30/lessons/60058✅ else일때도 문자열을 추가해줘야한다는걸 잊어서 헤맸다. 조건에 따라 달라지는 결과를 꼼꼼히 예상 하자✅ 문자열 replace를 해버려서 헤맸다 -> 인덱스를 기준으로 제거해야한다는걸 명심하자def divide(string): stack = [] stack.append(string[0]) u,v = string[0],"" for s in string[1:]: if stack[-1]==s: stack.append(s) u+=s else: stack.pop() u..

[구현] 자물쇠와 열쇠 - 파이썬

링크: https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ✅  배열 초기화 주의 :  for문 돌때마다 deepcopy필요, arr = copy.deepcopy(origin_arr)✅  rotate할때 4번 돌려야함 (3번 아님)import copydef rotate(arr): new = [[0]*len(arr) for _ in range(len(arr[0]))] for i in range(len(arr)): for j in ..

[그리디] 백준 13164 Gold5 행복유치원

📌 링크 : https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 www.acmicpc.net ❗️ Issue 1️⃣ 나는 이문제를 조합으로 생각하고 풀었다. 그런데 시간 복잡도를 생각해보면 그렇게 풀면 안되는 접근 방식이었다. 시간 제한이 1초이며, N의 범위가 300,000이다. 이 문제를 해결하려면 시간 복잡도가 O(NlogN) 미만이 되는 알고리즘을 설계해야 한다..! 원생들을 K개의 조로 나누는 것에 집중하는 것이 아닌, 인접하는 원생들 사이의 키 차이에 집중하여..

코딩테스트 2024.01.09