문제는 위와 같습니다. 저한테는 조금 난이도가 있었던 문제였습니다. 먼저 이 문제는 Union-Find 알고리즘을 사용하였습니다. Union-Find 알고리즘은 Disjoint Set을 표현하기 위한 알고리즘인데, Disjoint Set 은 서로 중복되지 않는 부분 집합들로 나누어진 원소들에 대한 정보를 저장하고 조작하는 자료구조로 서로소 집합 자료구조입니다. 이 문제를 해결하기 위해 딕셔너리 타입으로 자신(key)과 연결된 대표 노드(value)를 표현하고, 새로운 조합이 들어올 때마다 각각의 대표 노드(부모 노드)를 찾아서(Find) 다른 쪽의 부모 노드로 연결(Union)해 주면서 union 과 find 를 반복하는 것입니다. 또한 이때 연결되는 노드의 수를 알아야하기 때문에 이를 표현하는 딕셔너리..
문제는 위와 같고 처음에는 이진 탐색 방식으로 풀었다가 시간 초과가 나서 주어지는 N 개의 정수를 담는 Set 을 만든 뒤 그 안에 X 정수가 존재하는지를 알아내는 방식으로 구현하였습니다. 파이썬 코드는 다음과 같습니다. from sys import stdin N = int(stdin.readline()) A = set(map(int, stdin.readline().split())) M = int(stdin.readline()) find = list(map(int, stdin.readline().split())) for item in find: if item in A: print(1) else: print(0) 자바 코드는 다음과 같습니다. " "로 구분되는 문자열을 한번에 int[] 로 받는 방법과 i..
문제는 위와 같으며 이미 만들어진 SHA-256 라이브러리를 통해 구현하였습니다. 파이썬 코드는 다음과 같습니다. import hashlib from sys import stdin S = stdin.readline().strip() hashStr = hashlib.sha256(S.encode()) print(hashStr.hexdigest()) 자바 코드는 다음과 같습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.security.MessageDigest; public class Main { public static void main(String[] args) throws Exception { Buffered..
문제는 위와 같으며 처음에는 커서의 위치를 변수로 가지고 있고 화살표 입력 등에 따라 커서를 이동시키면서 비밀번호를 찾는 방식을 사용하였습니다. 하지만 이렇게 한 경우에는 시간 초과가 발생하였습니다. 그래서 커서를 이동시키지 않고 커서를 기준으로 왼쪽 문자를 담는 배열과 오른쪽 문자를 담는 배열을 따로 선언하는 방식으로 구현하였습니다. 파이썬 코드는 아래와 같습니다. from sys import stdin test_case = int(stdin.readline()) for _ in range(test_case): L = stdin.readline().strip() left = [] right = [] for ch in L: if ch == '': if right: left.append(right.pop(..
문제는 위와 같고 (우선순위, 인덱스) 형태의 튜플을 리스트로 저장한 뒤, 앞에서부터 차례대로 꺼내서 우선순위가 최대인지 확인합니다. 우선 순위가 최대라면 먼저 출력 count 를 1 추가한 뒤, 원래 뽑으려고 한 인덱스가 맞는지 확인하여 맞다면 그대로 출력 count 를 프린트하고 종료합니다. 아니라면 그냥 pop(0) 합니다. 맨 앞에서 꺼낸 데이터의 우선순위가 최대가 아니라면 해당 데이터를 다시 리스트의 젤 마지막에 추가합니다. 파이썬 코드는 다음과 같습니다. from sys import stdin test_case = int(stdin.readline()) for _ in range(test_case): n, m = map(int, stdin.readline().split()) queue = li..
- Total
- Today
- Yesterday
- map
- 프로그래머스
- CodeDeploy
- java
- 수학
- DFS
- SWIFT
- ionic
- string
- Combination
- 소수
- 에라토스테네스의 체
- BFS
- Dynamic Programming
- AWS
- search
- programmers
- 순열
- 조합
- EC2
- spring
- CodeCommit
- array
- cloudfront
- sort
- Algorithm
- Baekjoon
- CodePipeline
- ECR
- permutation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |