반응형
17389 보너스 점수, 16165 걸그룹 마스터 준석이, 17224 APC는 왜 서브태스크 대회가 되었을까?
17389 보너스 점수
# 첫번째 풀이(consol, VSC에서 되는데 백죽에서 런타임 에러.. 이유 모르겠음)
N, S = int(input()), input()
score, bouns = 0, 0
for i in range(N):
if S[i] == 'O':
score, bonus = score + i + bonus + 1, bonus + 1
else:
bonus = 0
print(score)
# 두번째 풀이
N, S = input(), input()
score, bonus = 0, 0
for idx, OX in enumerate(S):
if OX == 'O':
score, bonus = score + idx + 1 + bonus, bonus + 1
else:
bonus = 0
print(score)
- enumerate 이용해서 인덱스 뽑을 수 있음
16165 걸그룹 마스터 준석이
# 첫번째 풀이
N, M = map(int, input().split())
ggroup = {}
for _ in range(N):
groupname, member = input(), int(input())
for _ in range(member):
if not groupname in ggroup.keys():
ggroup[groupname] = [input()]
else:
ggroup[groupname].append(input())
for _ in range(M):
name, kind = input(), int(input())
if kind == 0:
ggroup[name].sort()
for item in ggroup[name]:
print(item)
else:
for team in ggroup.keys():
if name in ggroup[team]:
print(team)
break
# 두번째 풀이
N, M = map(int, input().split())
team_mem, mem_team = {}, {}
for i in range(N):
team_name, mem_num = input(), int(input())
team_mem[team_name] = []
for j in range(mem_num):
name = input()
team_mem[team_name].append(name)
mem_team[name] = team_name
for i in range(M):
name, q = input(), int(input())
if q:
print(mem_team[name])
else:
for mem in sorted(team_mem[name]):
print(mem)
- 딕셔너리 구조에서 value를 통해서 key값을 구하는 방법으로 처음부터 value값에 대한 key값을 할당해주는 딕셔너리를 만들수 있음
- for 문에서 iterable 객체로 sorted()를 바로 사용할 수 있음
17224 APC는 왜 서브태스크 대회가 되었을까?
# 첫번째 풀이(100점)
N, L, K = map(int, input().split())
array = [] # level of problem
check = [False] * N # check solved problem
count = 0 # maximum number of problems she can solve
score = 0
for _ in range(N):
array.append(list(map(int, input().split())))
for i in range(N):
if count > K:
break
if array[i][1] <= L and array[i][0] > L:
score += 140
count += 1
check[i] = True
for i in range(N):
if count > K:
break
if array[i][1] <= L and not check[i]:
score += 140
count += 1
check[i] = True
for i in range(N):
if count > K:
break
if array[i][0] <= L and not check[i]:
score += 100
count += 1
print(score)
# 두번째 풀이(140점)
N, L, K = map(int, input().split())
easy, hard = 0, 0
for i in range(N):
sub1, sub2 = map(int, input().split())
if sub2 <= L:
hard += 1
elif sub1 <= L:
easy += 1
ans = min(hard, K) * 140 # compare number of hard problem and number of problem she can solve
if hard < K: # if time left, solve easy problems
ans += min(K-hard, easy) * 100
print(ans)
반응형
'컴퓨터 > 백준 문제풀이' 카테고리의 다른 글
2484 주사위 네개, 16675 두 개의 손, 17413 단어 뒤집기 (0) | 2020.10.29 |
---|---|
9037 The candy war, 16769 Mixing Milk, 2480 주사위 세개 (0) | 2020.10.23 |
15969 행복, 10539 수빈이와 수열, 17269 이름궁합 테스트 (0) | 2020.10.20 |
1759 암호만들기, 5719 거의 최단 경로, 1774 우주신과의 교감 (0) | 2020.10.16 |
1781 컵라면, 9663 N-Queen, 1987 알파벳 (0) | 2020.10.14 |
댓글