일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- Kotlin
- 구현
- CleanCode
- javascript
- android
- 순환
- front-end
- DFS
- SWEA
- inflearn
- 정렬
- 자바
- 해슁
- codecademy
- DP
- Web
- SQL
- html
- 클린코드
- Spring
- 알고리즘
- 검색트리
- 다이나믹 프로그래밍
- 프로그래머스
- Color
- java
- CSS
- algorithm
- 코딩테스트
- Today
- Total
목록Algorithm/BAEKJOON (47)
깡뇽

드래곤 커브 속성 : 1. 시작점 / 2. 시작 방향 / 3. 세대 0세대 드래콘 커브 : 1인 선분 1세대 드래곤 커브 : 90도 2세대 드래곤 커브 : ... K세대 드래곤 커즈 : K-1세대 드래곤 커브를 끝 점을 기준으로 90도 시계 방향 회전 시킨 다음, 그것을 끝 점에 붙인 것 100x100인 격자 위에 드래곤 커브 N개 존재. 크기가 1x1인 정사각형의 네 꼭짓점이 모두 드레곤 커브의 일부인 정사각형의 개수를 구하자. - 입력 1줄 : 드래곤 커브의 개수 N() 2~N줄 : 드래곤 커브의 정보(x&y : 드래곤 커브의 시작점 / d : 시작 방향 / g : 세대) * 방향 : 0: x좌표가 증가하는 방향 (→) / 1: y좌표가 감소하는 방향 (↑) / 2: x좌표가 감소하는 방향 (←) /..
NxN 크기의 도시(빈 칸, 치킨집, 집 중 하나) (r, c) : r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸 치킨 거리 == 집과 가장 가까운 치킨집 사이의 거리 도시의 치킨 거리 == 모든 집의 치킨 거리의 합 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 0 == 빈 칸, 1 == 집, 2 == 치킨집 도시에서 가장 수익을 많이 낼 수 있는 치킨집의 개수는 최대 M개 도시의 치킨 거리가 가장 작게 될 때를 고려. - 입력 1줄 : N(2
비바라기 마법 -> NxN 격자에서 연습 격자의 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지함. 바구니에 저장할 수 있는 물의 양에는 제한 없음. (r, c)는 격자의 r행 c열에 있는 바구니를 의미. A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미. 격자의 가장 왼쪽 윗 칸 (1, 1) 가장 오른쪽 아랫 칸 (N, N) 연습을 위해 1번 행과 N번 행을 연결. 1번 열과 N번열 연결. 즉, N번 행의 아래에는 1번 행이, 1번 행의 위에는 N번 행이 있고, 1번 열의 왼쪽에는 N번 열이, N번 열의 오른쪽에는 1번 열이 있음. 비바라기 시전 -> (N, 1), (N, 2), (N-1, 1), (N-1, 2)에 비구름 생성 구름 이동 M번 명령 -> i번째 이동 명령은..

길이가 N인 컨베이어 벨트 / 길이가 2N인 벨트가 해당 컨베이어 벨트를 위아래로 감싸며 도는 중. 길이 1 간격으로 2N개의 칸으로 나뉨. 각 칸은 1부터 2N까지의 번호가 매겨져 있음. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동. i번 칸의 내구도는 Ai / 1번 칸이 있는 위치를 "올리는 위치" / N번 칸이 있는 위치를 "내리는 위치" 로봇을 올리는 위치에 올리거나 로봇이 어떤 칸으로 이동하면 그 칸의 내구도는 즉시 1만큼 감소. 1. 벨트가 칸 위에 있는 로봇과 함께 한 칸 회전. 2. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전하는 방향으로 한 칸 이동할 수 있다면 이동. 만약 이동할 수 없다면 가만히 ..
톱니 4개 (1, 2, 3, 4번 일렬 배치 / 각 8개의 톱니 / N극 or S극) K번 회전(한 칸 기준 / 시계 or 반시계) 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전할 수도 있고 안 할 수도 있음. ex) 톱니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니의 극이 다르다면, B는 A가 회전한 방향과 반대방향으로 회전. - 입력 1~4줄 : 1, 2, 3, 4번 톱니바퀴의 상태 (8개의 정수 / 12시 방향부터 시계방향 순서 / N극 == 0 , S극 == 1) 5줄 : K (1
로봇 청소기 장소 : N x M 크기의 직사각형 (1x1 크기의 정사각형 칸으로 나누어짐) 지도 (r, c) (r : 북쪽으로부터 떨어진 칸의 개수, c : 서쪽으로부터 떨어진 칸의 개수) 1. 현재 위치 청소 2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례로 탐색 진행 (1) 왼쪽 방향에 아직 청소 안 한 공간이 있으면, 그 방향으로 회전 후 다음 한 칸 전진하고 1번부터 진행 (2) 왼쪽 방향에 청소 필요 없으면, 그 방향으로 회전하고 2번으로 돌아가기 (3) 네 방향 모두 청소가 이미 끝났거나 벽이면, 바라보는 방향을 유지한 채로 한 칸 후진하고 2번으로 돌아가기 (4) 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동 멈추기 14503..

오랜만에 다시 알고리즘 풀기 시작! 11399번 ATM 풀이 n = int(input()) numbers = list(map(int, input().split())) numbers.sort() #정렬 pre = 0 #이전까지의 합 result = 0 #총 합계 for i in range(0, n): result += pre + numbers[i] #이전합에 현재값을 더하여 총합계 만들기 pre += numbers[i] #다음 차례에 쓰일 이전 값 갱신 print(result) 사람의 수와 각 사람이 돈을 인출하는 데 걸리는 시간을 입력으로 받는다. 5 그리고 3 1 4 3 2 를 입력으로 하면, 5명의 사람이 차례로 3분, 1분, 4분, 3분, 2분의 시간 동안 돈을 인출하는데 두 번째 사람부터는 앞사람..

자료구조에 있는 문제를 풀어보았다. 원래는 replit이라는 웹 IDE를 사용했었는데 가끔씩 오류가 나곤 했었다. 그래도 참고 사용했지만... 결국 오늘 GitHub에 Codingtest 이름의 repository를 만들었다. Pycharm에서 앞으로 문제를 풀고 GitHub에 올리려고 한다...! 9012번 괄호 풀이 [시도1] 맞았습니다!! n = int(input()) for _ in range(n): line = input() stack = [] for i in line: if i == '(': stack.append('(') elif i == ')': if len(stack) == 0: stack.append(')') break else: stack.pop() if len(stack) != 0:..

문자열 문제를 풀어보았다. 10809번 알파벳 찾기 풀이 [시도2] 맞았습니다!! word = input() # 입력받은 단어 alphabet = 'abcdefghijklmnopqrstuvwxyz' # 전체 알파벳 answer = [-1] * 26 # 출력을 위한 배열 # 입력받은 단어에 있는 글자를 알파벳에서 몇 번째인지 찾은 후에 배열에 표시 for i in range(len(word)): flag = word[i] # 입력받은 단어 하나 idx = alphabet.index(flag) # 입력받은 단어의 위치 if answer[idx] == -1: # 처음 등장하는 위치라면 answer[idx] = i # 배열에 해당 등장 위치 넣어주기 # 출력 for j in answer: print(j, end..

문자열과 관련된 유형들도 열심히 풀어보려고 한다. 테스트 케이스의 개수를 입력받는다. 테스트 케이스는 O와 X로 이루어진 한 줄의 문자열인데 O의 연속되는 계수만큼 점수를 받는다. 예를 들어, "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이 된다. 8958번 OX퀴즈 풀이 [시도1] 맞았습니다!! n = int(input()) # 테스트 케이스 반복 for _ in range(n): scores = [] #초기화 score = 0 #초기화 result = input() #OX퀴즈 문자열 입력 for i in range(len(result)): # O가 나오면 점수를 1 더해줌 if result[i] == "O": score += 1 # X가 아닌 O로 문자열이 끝나더라도 ..

BFS 문제로 간다...!!! 4963번 섬의 개수 풀이 [시도1] 맞았습니다!! with 솔루션 from collections import deque def bfs(x, y): queue = deque() queue.append((x,y)) ground[x][y] = 0 dx = [-1, 1, 0, 0, 1, -1, -1, 1] dy = [0, 0, -1, 1, 1, -1, 1, -1] while queue: position = queue.popleft() for i in range(8): nx = position[0] + dx[i] ny = position[1] + dy[i] if 0

DFS 유형의 문제를 풀어보았다. 2210번 숫자판 점프 풀이 #솔루션 board = [] # 입력 받는 숫자판 result = [] # 완성된 여섯 자리 숫자들 # 숫자판 입력 for _ in range(5): line = list(map(str, input().split())) board.append(line) # 상,하,좌,우 방향 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(x, y, num): if len(num) == 6: # 6자리의 숫자가 완성되면 if num not in result: # 중복이 있는지 확인해서 없으면 result.append(num) # 추가 return # 상, 하, 좌, 우 이동 for i in range(4): nx = x + ..