일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- w3school
- Unreal Engine 5
- 파이썬
- C#
- 프로그래밍
- guide
- 오류
- DP
- c++
- Tutorial
- dynamic
- parameter
- Programming
- Material
- 백준
- loop
- 문제풀이
- 시작해요 언리얼 2022
- String
- Basic
- W3Schools
- 기초
- github
- dfs
- UE5
- 재귀
- python
- Unity
- Class
- Today
- Total
목록Algorithm (107)
행복한 개구리

t = int(input()) for i in range(t): cnt = 0 a = input() for i in a: if cnt < 0: result = "NO" break if i == "(": cnt += 1 elif i == ")": cnt -= 1 if cnt == 0: result = "YES" else: result = "NO" print(result) 괄호들이 짝을 이루어야 하기 때문에 cnt를 +- 해주면서 진행합니다. 단, cnt가 음수일 경우, 여는 괄호인 "("보다 닫는 괄호인 ")"가 먼저 나온 것이므로 짝이 맞질 않습니다 따라서 cnt가 음수라면 반복을 중지하고 NO를 출력합니다. 반복문을 진행하여 cnt가 0이라면 괄호들이 짝을 이룬다는 것이므로 YES를 출력, 0이 아니라..

t = int(input()) for i in range(t): n, m = map(int, input().split()) prior = list(map(int, input().split())) prints = [[i, prior[i]] for i in range(n)] k = 0 cnt = 0 while True: if prints[0][1] == max(prior): cnt += 1 if prints[0][0] == m: print(cnt) break else: prints.pop(0) prior.remove(max(prior)) else: prints.append(prints.pop(0)) 큐의 특성인 FIFO(First In First Out)을 이용하여 가장 앞에 있는 명령의 중요도가 가장 우선..

import sys input = sys.stdin.readline print = sys.stdout.write def zero(s): if len(s) > 0: s.pop(-1) else: return def push(s, num): s.append(num) stack = [] k = int(input()) for i in range(k): c = int(input()) if c == 0: zero(stack) else: push(stack, int(c)) print(str(sum(stack))+"\n") 입력은 모두 숫자로 받기때문에 입력받는 c를 int 로 형변환해줍니다. c가 0이라면 zero함수를 실행하고 아니라면 push함수로 스택에 입력받은 값을 저장합니다. 최종적으로 남아있는 수의 합은 스..

스택 - 위키백과, 우리 모두의 백과사전 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 ko.wikipedia.org 스택에 대한 설명입니다. 자료구조 스택에 대해서 모른다면 보는걸 추천합니다. import sys input = sys.stdin.readline print = sys.stdout.write def push(s, num): s.append(num) def pop(s): if len(s) == 0: return -1 else: return s.pop(-1) def size(s): return len(s) def empty(s): ..

n, m = map(int, input().split()) def FindTwoMultiple(a): t = 0 while a >= 2: t += a//2 a //= 2 return t def FindFiveMultiple(a): f = 0 while a >= 5: f += a//5 a //= 5 return f print(min(FindTwoMultiple(n)-FindTwoMultiple(m)-FindTwoMultiple(n-m), FindFiveMultiple(n)-FindFiveMultiple(m)-FindFiveMultiple(n-m))) 이것은 nCm을 의미합니다. nCm = n! / (m! * (n-m)! )입니다. nCm를 소인수분해 했을 때 (2 * 5)ⁿ 을 얼마나 갖는지 알아내는 문제..

n = int(input()) cnt = 0 while n >= 5: cnt += n//5 n//=5 print(cnt) n! = 1*2*3*4....*n입니다. n!의 결과값이 뒤에서부터 0을 가지기 위해서는 10의 배수가 곱해져야합니다. 이유는 n!를 소인수분해를 했을 때 2ⁿ*5ⁿ만큼 뒤에서부터 0을 가지기 때문입니다. 10 = 2*5입니다. 구조상 n!는 5의 배수가 2의배수보다 적습니다. 따라서 5의 배수의 개수를 구하여 출력해주면 됩니다. n!에서 5의 배수의 개수를 구하려면 n / 5 를 하면 알 수 있습니다. =>만약 n이 100이라면 5, 10, 15... 100처럼 5의 배수들은 모두 n*5의 형태를 가지므로 5를 하나씩 포함한다고 볼 수 있습니다. 여기서 하지만 25의 배수들은 25 ..