728x90
SMALL
제1회 유틸컵 - Chapter 2
www.acmicpc.net
- 이번 글에서는 두 번째로 진행한 "제1회 유틸컵 - Chapter 2" 대회에 대한 문제를 다뤄보겠습니다.
R번 : Rust Study
30033번: Rust Study
첫 번째 줄에는 임스가 계획하고 공부한 일수 $N$이 주어진다. $(1 \le N \le 1\,000)$ 두 번째 줄에는 임스가 공부하고자 계획한 페이지 수 $A_1$, $A_2$, $\cdots$, $A_N$가 공백으로 구분되어 주어진다. $(1 \le
www.acmicpc.net
- 계획한 페이지와 실제 진행한 페이지의 직접적인 비교를 통해 결과를 Count 해주면 되는 문제입니다.
# 구현
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
count = sum(ai <= bi for ai, bi in zip(a, b))
print(count)
S번 : Slice String
30034번: Slice String
첫 번째 줄에는 문자 구분자의 개수 $N$이 주어진다. $(1 \le N \le 1\,000)$ 두 번째 줄에는 $N$개의 문자 구분자가 공백으로 구분되어 주어진다. 세 번째 줄에는 숫자 구분자의 개수 $M$이 주어진다. $(1
www.acmicpc.net
- 집합 연산을 통해 최종적으로 적용되는 구분자들 Set을 구해준 후, 해당 구분자들을 target 문자열에서 제거하면 끝!
# 문자열, 구현
input()
char_delimiters = set(input().split())
input()
num_delimiters = set(input().split())
input()
merge_delimiters = set(input().split())
input()
target_string = input()
delimiters = (char_delimiters | num_delimiters) - merge_delimiters
for delimiter in delimiters:
target_string = target_string.replace(delimiter, ' ')
processed_string = target_string.split()
print(*processed_string, sep='\n')
I번 : INK
30036번: INK
첫 번째 줄에 정수 $I$, $N$, $K$가 공백으로 구분되어 주어진다. $(1 \le I, N, K \le 100)$ 두 번째 줄에는 잉크 문자열이 주어진다. 세 번째 줄부터 $N$개의 줄에 걸쳐 $N \times N$ 크기의 스테이지가 주어진
www.acmicpc.net
- 먼저 Stage 배열을 순회하며 시작 위치를 설정하고, 명령어에 따라 이동 및 잉크 상태를 확인한 뒤에 플레이어 최종 위치에 '@'를 배치하면 되는 문제입니다.
- 저는 move와 apply_ink 함수를 분리하여 명령어별로 다르게 처리하였습니다.
# 구현, 시뮬레이션
import sys; input=sys.stdin.readline
def move(r, c, direction, n, stage):
dr, dc = {'U': (-1, 0), 'D': (1, 0), 'L': (0, -1), 'R': (0, 1)}.get(direction, (0, 0))
nr, nc = r + dr, c + dc
if 0 <= nr < n and 0 <= nc < n and stage[nr][nc] == '.':
return nr, nc
return r, c
def apply_ink(r, c, chargedInk, currentColor, n, stage, ink):
for i in range(n):
for j in range(n):
if abs(r-i) + abs(c-j) <= chargedInk and stage[i][j] != '.':
stage[i][j] = ink[currentColor]
I, N, K = map(int, input().split())
ink = list(input())
r, c = 0, 0
stage = [list(input()) for _ in range(N)]
for i in range(N):
for j in range(N):
if stage[i][j] == '@':
stage[i][j] = '.'
r, c = i, j
break
else:
continue
break
command = input()
chargedInk = 0
currentColor = 0
for com in command:
if com in 'UDLR':
r, c = move(r, c, com, N, stage)
elif com == 'j':
chargedInk += 1
elif com == 'J':
apply_ink(r, c, chargedInk, currentColor, N, stage, ink)
chargedInk = 0
currentColor = (currentColor + 1) % I
stage[r][c] = '@'
for row in stage:
print(*row, sep='')
T번 : Tier and Rank
30035번: Tier and Rank
만약 주어진 티어들로 "Legend Legend"의 모든 유저의 티어를 정할 수 없다면 올바르지 않은 등급 시스템이므로 첫째 줄에 Invalid System이라고 출력한다. 그 외의 경우에, 친구가 자랑한 티어가 게임의
www.acmicpc.net
- T번을 포함해서 나머지 문제들은 추후에 풀이를 추가하도록 하겠습니다!
728x90
LIST
'알고리즘 대회 > 백준' 카테고리의 다른 글
제1회 임스의 메이플컵 (The 1st lms0806's Maple Cup) · Arena #6 (3) | 2023.11.15 |
---|