일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 도넛과막대그래프
- 최단경로
- 트리의지름
- 섬연결하기
- 벽부수고이동하기
- DP
- 사이클게임
- 다익스트라
- 파이썬
- 구현
- 파괴되지않은건물
- 자물쇠와열쇠
- 거리두기확인하기
- 그래프탐색
- 위상정렬
- DFS
- javascript
- 프림알고리즘
- 두큐합같게만들기
- 프로그래머스
- 징검다리건너기
- 17404
- 백준
- 이모티콘할인행사
- 최소스패닝트리
- [1차]캐시
- 큐
- RGB거리2
- BFS
- 알고리즘
- Today
- Total
목록분류 전체보기 (50)
블로그 이름 뭐로 하지
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 예전에는 DFS로 풀었길래 이번엔 BFS로 풀어봤다. 사실 요렇게 하나의 덩어리를 찾는건 DFS가 뭔가 더 정석인 느낌인데... 새로운 것도 하고 싶어서 ㅎㅎ 그리고 난 원래 BFS를 더 좋아한다. 깊이탐색하다보면 재귀때문에 헷갈린다ㅠ 이 문제는 정말 기초적인 DFS BFS문제라서 두 풀이가 맥락이 비슷~하다. 방문한 노드는 visited를 True로 변경해주고 방문하지 않은 아이들만 ..
문제 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 풀이 난 이런 류의 문제가 참 어렵다 ^ __ ^ ... 머리를 굴려야하는데 머리가 안 굴러가서 그른가.. 규칙은 n=3일때 만들었던 삼각형이 n=6일때 양쪽에 추가되고, n=6일때 만들었던 트리가 n=12일때 양쪽에 추가되는 식으로 발전한다는 것이다. 사실 거기까진 오케이였는데 양쪽에 공백을 넣는걸 어떻게 넣어야하나..ㅠㅠ 이 부분에서 해결이 안 됐다. 다른 분 풀이를 보니 우선 n=3일때 맨밑은 5칸, n=6일때 맨밑이 11칸이니까 우선 2..
문제 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 풀이 2달 전에 풀었던 문젠데 지금 다시 풀 때랑 2달 전 풀이랑 생각한게 똑~~같아서 놀랐다. 난 2달 전과 비교해서 발전한게 없다는 뜻인건가(...) 뭐 아무튼 ... bfs문제였고 visited에 해당 칸에 도달하기까지 가장 짧게 방문한 거리를 저장해두는 방식이다. 여기서 visited를 3차원으로 구성하는데 visited[2][2][1] 에 들어간 값의 의미는..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 논리는 떠올렸는데... 중간에 실수한 것들 디버깅하면서 찾아내는게 참 힘들었다. 늘 느끼지만 이런 시뮬레이션은.. 처음부터 정신 똑바로 차리고 푸는게 좋은듯하다. 실수 찾아내기 넘 힘들어... 1. 처음에 자물쇠가 다 1로 채워져있으면 열쇠가 굳이 필요없으므로 True를 리턴한다. 2. 키를 90도 회전한다. 3. 회전한 키가 lock에 들어갈 수 있는 모든 경우의 수를 다 탐색한다. ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 예전에도 풀었던 문제인데 ... 예전 풀이를 먼저 보고 충격을 받았다. 최소 최댓값을 뽑으라고하면 이제는 Heap이 가장 먼저 떠오르는데... ㅋㅋ ㅠㅠ 당시엔 그렇지 않나보다 from collections import deque def solution(operations): q=deque() for cmd in operations: if cmd[0]=="I": q.append(int(..
문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 풀이 RGB거리랑 비슷하다고 생각해서 그렇게 풀었더니 초과가 나왔다 ㅎㅎ 메모리 제한이 있어서 처음 입력값 자체를 하나의 거대한 arr로 저장해두는 것 자체가 안 되는 것 같았다. 그래서 입력받을 때마다 바로바로 맥스,민 값을 저장해둬야 겠다고 생각하고 코드를 변경했다. 일반적인 디피 문제라서 어렵진 않지만 메모리를 어떻게 적게 쓸 것인가를 고민했던 문제! 코드 from sys import stdin N ..
문제 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 풀이 트리 순회에 대한 기본적인 문제다. 전위 중위 후위 다 까먹고 있었는데 오랜만에 기억을 더듬더듬.. 하니 좋았다. 트리는 딕셔너리 형태로 구현했다. 트리의 순회는 일정한 기준으로 왼쪽 먼저 순회라면 왼쪽을 다 순회한 후 다음 노드를 순회한다. 따라서 재귀를 통해 원하는 부분 먼저 끝까지 순회할 수 있게끔 해줘야 한다. 코드 N = int(input()) tree = {} fo..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 단순 구현으로 풀었다. 예전에도 풀었던 문제라서...! 특정 진수로 변환하는 법을 까먹어서 검색해서 풀었다.. ㅎ 기억 좀 하자 현재 숫자를 원하는 진수로 나눈 나머지 값을 str형태로 넣어주고 n은 해당 진수로 나눈 몫으로 바꾼다. n이 있을 때까지 반복 ... => 그렇게 탄생한 str을 거꾸로 돌려주면 원하는 진수로 변환된 값이 나옴! 당연하지만 소수인지 확인할 땐 1부터 해당 숫..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 만약 문자열이 abc 라면 2개씩 나누는것부터는 의미가 없다. ababa 라면 3개씩 나누는것부턴 의미가 없다. 무조건 처음과 똑같은 문자열 길이가 나오기 때문이다. => 즉 최대 문자열 길이 // 2 만큼 씩 나눠서 확인하면 된다는 뜻! 해당 아이디어를 바탕으로 큐에 문자열을 넣어주고 1부터 문자열길이 // 2 까지 for문을 돌면서 각 케이스마다 문자열이 얼마나 압축되는지 확인한다...
문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 $R$칸, 가로 $C$칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 ($1$행 $1$열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 www.acmicpc.net 풀이 얘도 예전에 이미 풀었던 문제인데.. 딱 봤을 때 간단한 dfs같은데 왜이리 정답율이 낮은건가 싶었다. 나도 dfs로 풀었고 방문한 알파벳을 set형태의 visited에 add해주는 식으로 관리했다. 파이썬3으로 하면 시간 초과가 나고 pypy로 해야 엄청 느릿느릿 채점돼서 통과한다. 코드 import sys input=sys.stdin.readline r,c = map(i..