1. BOJ 4435 중간계 전쟁
전투의 개수 T가 주어지고, 전투 한 번당 간달프 군대에서 참여한 종족의 수와 사우론 군대에서 참여한 종족의 수가 주어진다고 합니다.
그래서 일단 입력값을 받는 코드를 짜봅시다. 입력값은 간달프쪽에서 6개, 사우론쪽에서 7개로 고정된 개수의 값으로 입력 받기 때문에 변수 13개를 이용하여 문제를 풀 수 있지만, 너무 비효율적이기 때문에 리스트를 각각 하나씩 만들어서 한 번에 입력 값을 받아줍시다.
t = int(input())
for i in range(t):
A = list(map(int,input().split())) #간달프
B = list(map(int,input().split())) #사우론
이제 사칙 연산을 통해 각 군대의 총 점수를 더해줍시다. 입력 값은 아래에 적힌 종족순서대로 입력 받음을 보장되어 있으니 그대로 A[0] * 1 + A[1]*2 +.... 처럼 수식을 만들어주면 됩니다.
t = int(input())
for i in range(t):
A = list(map(int,input().split()))
B = list(map(int,input().split()))
a_val = A[0]*1 + A[1]*2 + A[2]*3 + A[3]*3 + A[4]*4 + A[5]*10
b_val = B[0]*1 + B[1]*2 + B[2]*2 + B[3]*2 + B[4]*3 + B[5]*5 + B[6]*10
이제 출력을 해야합니다. 출력은 총 3가지가 있는데요.
1. 간달프의 군대가 이길 때(a_val > b_val)
2. 사우론의 군대가 이길 때(a_val < b_val)
3. 둘의 군대 점수가 동점일 때(a_val == b_val)
이렇게 둘의 점수를 비교해서 출력 결과를 다르게 해야하므로 if / elif / else문을 이용해 출력을 해줄 수 있습니다.
거기다가 매 전투마다 번호를 출력해야하므로 format도 사용해야 합니다.
t = int(input())
for i in range(t):
A = list(map(int,input().split()))
B = list(map(int,input().split()))
a_val = A[0]*1 + A[1]*2 + A[2]*3 + A[3]*3 + A[4]*4 + A[5]*10
b_val = B[0]*1 + B[1]*2 + B[2]*2 + B[3]*2 + B[4]*3 + B[5]*5 + B[6]*10
if a_val > b_val: print('Battle {}: Good triumphs over Evil'.format(i+1))
elif a_val < b_val: print('Battle {}: Evil eradicates all trace of Good'.format(i+1))
else:print('Battle {}: No victor on this battle field'.format(i+1))
참고로 출력문은 print()함수의 end인자를 이용하여 Battle {}: 부분을 따로 떼어서 한 줄로만 작성할 수 있습니다. 이러면 좀 더 적은 노력으로 코드를 구현할 수 있습니다.
t = int(input())
for i in range(t):
A = list(map(int,input().split()))
B = list(map(int,input().split()))
a_val = A[0]*1 + A[1]*2 + A[2]*3 + A[3]*3 + A[4]*4 + A[5]*10
b_val = B[0]*1 + B[1]*2 + B[2]*2 + B[3]*2 + B[4]*3 + B[5]*5 + B[6]*10
print('Battle {}:'.format(i+1),end=' ')
if a_val > b_val: print('Good triumphs over Evil')
elif a_val < b_val: print('Evil eradicates all trace of Good')
else:print('No victor on this battle field')
2. BOJ 15814 야바위 대장
문자열 S가 주어지고, T 값을 입력 받아 문자열을 T번 바꾼뒤에 바뀐 문자열 S'를 출력하라는 문제입니다.
일단 입력 값을 받는 코드를 만들어봅시다.
s = input()
t = int(input())
for i in range(t):
a, b = map(int,input().split())
이렇게 해서 문자열을 서로 바꿔야하는데요. 이렇게 문자열로 s를 받아서 아래의 코드처럼 문자의 위치를 바꾸려고 코드를 실행해보면 오류가 나옵니다.
s = input()
t = int(input())
for i in range(t):
a, b = map(int,input().split())
s[a], s[b] = s[b], s[a]
print(s)
그래서 우리는 값을 변경할 수 있는 리스트로 입력 값을 받아 값을 서로 바꾸어주면 됩니다.
s = list(input())
t = int(input())
for i in range(t):
a, b = map(int,input().split())
s[a], s[b] = s[b], s[a]
답을 출력할 때는 s가 리스트이므로 join을 이용하여 문자열로 출력을 해주시면 됩니다.
s = list(input())
t = int(input())
for i in range(t):
a, b = map(int,input().split())
s[a], s[b] = s[b], s[a]
print(''.join(s))
'Koala - 3기 > 기초 스터디' 카테고리의 다른 글
7주차 복습 문제 해설 (1) | 2021.04.27 |
---|---|
6주차 복습 문제 해설 (0) | 2021.04.20 |
5주차 복습 문제 해설 (1) | 2021.04.13 |
4주차 복습 문제 해설 (0) | 2021.04.06 |
기초 스터디 출석부 (0) | 2021.03.23 |