:)
[백준] 오리, [백준] 달력 본문
https://www.acmicpc.net/problem/12933
12933번: 오리
첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.
www.acmicpc.net
구현
1. 'quack' dict 선언. 문자열 탐색, 이전 소리가 있는지 check
2. 'q' 일때 count +1, 'k' 일때 concurrent -1
import sys
q_list = sys.stdin.readline()
def solution(q_list):
quack = {x:0 for x in q_list}
prev_quack = {x:y for x,y in zip('uack','quac')}
concurrent = 0
answer = 0
for q in q_list:
quack[q] +=1
if q == 'q':
concurrent +=1
answer = max(answer, concurrent)
else:
if quack[prev_quack[q]] < 1:
return -1
quack[prev_quack[q]] -= 1
if q == 'k':
concurrent -=1
return -1 if concurrent else answer
print(solution(q_list))
https://www.acmicpc.net/problem/20207
20207번: 달력
수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장
www.acmicpc.net
구현
1. paper_start, paper_ends : 달력 시작, 각 라인 일정 끝 값들
2. 경우를 나눔
- 끝값+1 보다 start 값이 더 크면 그 전까지 넓이를 구함
- 각 라인 일정 끝값 반복문 -> start > end : 같은 라인 이어지는 날짜 일정
- 다음 라인에 오는 일정
import sys
def solution(arr):
def get_area(paper_start, paper_ends):
return len(paper_ends)*(max(paper_ends) - paper_start + 1)
arr.sort(key=lambda x:(x[0],-x[1]))
paper_start, paper_ends = 1, [0]
answer = 0
for start, end in arr:
if start > max(paper_ends) + 1: # 달력 한칸 띄운 수 보다 크면 넓이 구함
answer += get_area(paper_start, paper_ends)
paper_start,paper_ends = start, [end]
else:
for i, paper_end in enumerate(paper_ends):
if start > paper_end: # 해당 라인 바로 다음에 오는 일정
paper_ends[i] = end
break
else:
paper_ends.append(end) # 날짜 겹치기로 다음 라인 일정 추가
return answer + get_area(paper_start, paper_ends)
N = sys.stdin.readline()
arr = [[*map(int,row.split())] for row in sys.stdin.readlines()]
print(solution(arr))
python 문법 (for ~ else)
- for 문이 break 등으로 끊기지 않고 끝까지 수행했을 때 else가 수행 됨.
'Algorithm(python)' 카테고리의 다른 글
[프로그래머스]신고 결과 받기, [프로그래머스]양궁대회 (0) | 2022.10.08 |
---|---|
[프로그래머스]튜플, [프로그래머스]스킬트리 (0) | 2022.10.05 |
[백준]꽃길, [백준]도영이가 만든 맛있는 음식, [백준]부분 삼각 수열 (0) | 2022.10.05 |
정규표현식, [백준]단어뒤집기2 (1) | 2022.09.21 |
python 문법 for algorithm (0) | 2022.08.02 |
Comments