728x90
N, T, A라는 숫자가 주어지고, A와 T는 각각 현재 득표수를 나타내는 상황이며 N은 총 표수를 나타낸다.
이때 이 선거의 결과 여부를 판단하는 문제가 되겠다.
남아있는 표수를 구한 뒤, 케이스를 나눠 계산해주면 되겠다.
import sys
input = sys.stdin.readline
n,t,a = map(int,input().split())
remain = n - t - a
if t <= a:
if t + remain < a:
print("Yes")
else:
print("No")
elif a <= t :
if a + remain < t:
print("Yes")
else:
print("No")
주어진 문자열을 규칙에 맞게 출력해주면 되겠다.
즉, 아래에서부터 위로 읽어주는건데 (f->d->a... 순), 마지막에 딸려있는 공백은 읽지 않고,
중간에 껴있는 공백은 *를 넣어주면 되겠고, 해당 코드는 아래와 같이 나오겠다.
import sys
input = sys.stdin.readline
N = int(input())
max_length = -1
word = []
for _ in range (0,N):
s = input().rstrip()
word.append(s)
max_length = max(max_length, len(s))
new_word = []
for i in range (0,N):
new_s = word[i] + (max_length - len(word[i])) * "*"
new_word.append(new_s)
answer = []
for i in range (0,max_length):
word = ""
cnt = 0
for j in range (N-1,-1,-1):
if new_word[j][i] != "*":
word += cnt * "*"
word += new_word[j][i]
cnt = 0
else:
cnt += 1
answer.append(word)
for ans in answer:
print(ans)
주어진 쿼리에 따라서 명령어를 수행하면 되겠다.
1은 볼을 넣고,
2는 볼을 빼고, (반드시 있다는 것이 보장)
3은 현재 숫자가 쓰여있는 볼의 종류 갯수 출력
딕셔너리를 사용하면 더욱 간편하게 풀 수 있는 것 같다. (시간복잡도도 굉장히 좋기때문)
import sys
from collections import defaultdict
input = sys.stdin.readline
Q = int(input())
d = defaultdict(int)
cnt = 0
def f(cmd):
global d
global cnt
if len(cmd) == 1: #케이스 3의 경우
print(cnt) #cnt가 갯수를 뜻하겠다
elif len(cmd) == 2:
if cmd[0] == 1: #케이스 1의 경우
d[cmd[1]] += 1
if d[cmd[1]] == 1:
cnt += 1
elif cmd[0] == 2: #케이스 2의 경우
d[cmd[1]] -= 1
if d[cmd[1]] == 0:
cnt -= 1
for _ in range (0,Q):
cmd = list(map(int,input().split()))
f(cmd)
3차원 prefix 문제가 되겠다.
3차원의 직육면체를 분할해서 생각해보면 좋을 것 같다.
import sys
from collections import defaultdict
input = sys.stdin.readline
N = int(input())
num = [[[0 for _ in range (0,N+1)] for _ in range (0,N+1)] for _ in range (0,N+1)]
for i in range (0,N):
for j in range (0,N):
a = list(map(int,input().split()))
for k in range (0,N):
num[i+1][j+1][k+1] = a[k]
prefix = [[[0 for _ in range (0,N+1)] for _ in range (0,N+1)] for _ in range (0,N+1)]
for i in range (1,N+1):
for j in range (1, N+1):
for k in range (1,N+1):
prefix[i][j][k] = prefix[i][j][k-1] + prefix[i][j-1][k] + prefix[i-1][j][k] - prefix[i-1][j-1][k] - prefix[i-1][j][k-1] - prefix[i][j-1][k-1] + prefix[i-1][j-1][k-1] +num[i][j][k]
Q = int(input())
for _ in range (0,Q):
l_x,r_x,l_y,r_y,l_z,r_z = map(int,input().split())
l_x,l_y,l_z = l_x-1, l_y-1, l_z-1
answer = prefix[r_x][r_y][r_z] - prefix[l_x][r_y][r_z] - prefix[r_x][l_y][r_z] - prefix[r_x][r_y][l_z] + prefix[r_x][l_y][l_z] + prefix[l_x][r_y][l_z] + prefix[l_x][l_y][r_z] - prefix[l_x][l_y][l_z]
print(answer)
E,F는 수학쪽에 가까운 문제 같았는데 못 풀어서 상당히 아쉬웠다.
힘내서 풀어봐야겠다.
'코딩' 카테고리의 다른 글
[BOJ, 백준] 1916 최소비용 구하기 python (0) | 2024.09.02 |
---|---|
[BOJ, 백준] 1713 후보 추천하기 Python (0) | 2024.08.28 |
[BOJ, 백준] 17404 RGB 거리 2 (0) | 2024.08.12 |
[BOJ, 백준] 1806 부분합 Python (0) | 2024.08.10 |
[BOJ, 백준] 8895 막대배치 Python (0) | 2024.08.05 |