일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Web
- 클린코드
- SWEA
- BFS
- Spring
- android
- javascript
- CSS
- 알고리즘
- 순환
- 다이나믹 프로그래밍
- Kotlin
- java
- 정렬
- 해슁
- 구현
- DP
- 검색트리
- codecademy
- DFS
- SQL
- 코딩테스트
- algorithm
- inflearn
- html
- CleanCode
- Color
- front-end
- 자바
- 프로그래머스
- Today
- Total
목록Algorithm (81)
깡뇽
톱니 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..
입력 1. input() 활용 1) n과 m에 각각 숫자가 할당되고, m번 반복하여 숫자행이 입력 n, m = map(int, input().split()) numbers = [] for _ in range(m): numbers.append(list(map(int, input().split())) 활용 2) n개의 숫자만큼 숫자들 여러 줄(엔터) 입력 n = int(input()) numbers = [int(input()) for _ in range(n)] 활용 3) 값들이 한 줄로(스페이스바) 입력 numbers = input().split() 2. sys.stdin.realine() 사용할 때, import sys를 해야 함. 기본으로 \n가 포함된다는 것을 유념. -> sys.stdin.readli..
AVL트리는 self balancing binary search tree이다. 자식 subtree의 높이가 최대 1개까지 차이가 나는데 둘 이상 차이가 나면 이를 복원하기 위해서 균형을 맞춘다. -> balanceFactor = height(left subtree) - height(right subtree) Q. 트리에 새로운 값을 삽입하기 위한 insert 함수를 완성해야 한다. /* Class node is defined as : class Node int val;//Value int ht;//Height Node left;//Left child Node right;//Right child */ static Node insert(Node root,int val) { if(root == null){ r..
Binary Tree, 이진트리의 height 높이는 트리의 root와 가장 멀리 있는 leaf 사이 edge들의 수이다. 고로 요 녀석의 트리의 높이는 2가 되는 것이다. Q. 트리의 노드 수를 int타입의 n으로 입력받고, 다음 줄에는 n개의 node[i]. data가 정수 타입으로 입력되는데, 최종적으로 이진트리의 높이를 int 타입으로 반환해야 한다. 이를 위해 height 함수를 완성하자! 예를 들어, 위와 같은 트리가 Input으로 들어간다면, 트리의 height는 3이 된다. main 메소드와 insert 메서드가 있으므로 트리는 이미 생성되어 있으니 트리의 높이를 구하는 height 메서드만을 완성하면 된다. public static int height(Node root) { int lef..
해커 랭크 문제 제대로 풀기 시작. Q. int 타입의 a와 b를 입력받아서 a와 b의 합을 int 타입으로 구하는 문제이다. So Simple! import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int solveMeFirst(int a, int b) { return a + b; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int a; a = in.nextInt(); int b; b = in.nextInt(); int ..
오랜만에 다시 알고리즘 풀기 시작! 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 + ..