📝 문제
💡 세준이와 세비는 온라인 게임을 즐겨한다.
이 온라인 게임에서는 군대를 서로 키울 수 있다.
세준이는 N명의 병사를 키웠고, 세비는 M명의 병사를 키웠다.
이제 서로 전쟁을 하려고 한다.
전쟁은 여러 번의 전투로 이루어진다.
각 전투에서 살아있는 병사중 제일 약한 병사가 죽는다.
만약 제일 약한 병사가 여러 명이고, 제일 약한 병사가 모두 같은 편에 있다면,
그 중에 한 명이 임의로 선택되어 죽는다.
하지만, 제일 약한 병사가 여러 명이고, 양 편에 모두 있다면,
세비의 제일 약한 병사 중 한 명이 임의로 선택되어 죽는다.
전쟁은 한 명의 병사를 제외하고 모두 죽었을 때 끝난다.
전쟁의 승자를 출력하는 프로그램을 작성하시오.
⚙️ 입력 : 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
T는 100보다 작거나 같다.
각 테스트 케이스는 다음과 같이 이루어져 있다.
첫째 줄에 N과 M이 들어오고, 둘째 줄에는 세준이의 병사들의 힘이 들어오고,
셋째 줄에는 세비의 병사들의 힘이 들어온다.
힘은 정수이고, 이 값이 클수록 강하고, 작을수록 약하다.
각 테스트 케이스는 줄 바꿈으로 구분되어 있다.
⚙️ 출력 : 각 테스트 케이스에 대해서 한 줄에 하나씩 차례대로 승자를 출력한다.
세준이가 이기면 S를 세비가 이기면 B를 둘다 아닐 경우에는 C를 출력한다.
1524번: 세준세비
첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 100보다 작거나 같다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 첫째 줄에 N과 M이 들어오고, 둘째 줄에는 세준이의 병사들의 힘이 들어
www.acmicpc.net
✅ 풀이
t = int(input())
for i in range(t):
input()
n, m = map(int, input().split())
ps = sorted(list(map(int, input().split())))
pb = sorted(list(map(int, input().split())))
while True:
if len(ps) == 0 or len(pb) == 0:
break
if ps[0] >= pb[0]:
pb.remove(pb[0])
else:
ps.remove(ps[0])
if len(ps) == 0:
print('B')
elif len(pb) == 0:
print('S')
else:
print('C')
💡 입력된 병사들의 힘을 기준으로 정렬해두게 되면
힘이 같은 경우 그 중에서 아무나 빠지면 되고, 아닌 경우 제일 약한 병사가 빠지면 되므로
패배한 쪽의 맨 앞 병사를 제거해주면 된다는 아이디어에서 시작했다.
양 측 제일 약한 병사들의 힘을 기준으로 더 약한 쪽을 제거해주었으며,
한쪽이라도 병사가 모두 제거당하면 승자를 출력하도록 했다.
📝 문제
💡 세준이와 세비는 온라인 게임을 즐겨한다.
이 온라인 게임에서는 군대를 서로 키울 수 있다.
세준이는 N명의 병사를 키웠고, 세비는 M명의 병사를 키웠다.
이제 서로 전쟁을 하려고 한다.
전쟁은 여러 번의 전투로 이루어진다.
각 전투에서 살아있는 병사중 제일 약한 병사가 죽는다.
만약 제일 약한 병사가 여러 명이고, 제일 약한 병사가 모두 같은 편에 있다면,
그 중에 한 명이 임의로 선택되어 죽는다.
하지만, 제일 약한 병사가 여러 명이고, 양 편에 모두 있다면,
세비의 제일 약한 병사 중 한 명이 임의로 선택되어 죽는다.
전쟁은 한 명의 병사를 제외하고 모두 죽었을 때 끝난다.
전쟁의 승자를 출력하는 프로그램을 작성하시오.
⚙️ 입력 : 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
T는 100보다 작거나 같다.
각 테스트 케이스는 다음과 같이 이루어져 있다.
첫째 줄에 N과 M이 들어오고, 둘째 줄에는 세준이의 병사들의 힘이 들어오고,
셋째 줄에는 세비의 병사들의 힘이 들어온다.
힘은 정수이고, 이 값이 클수록 강하고, 작을수록 약하다.
각 테스트 케이스는 줄 바꿈으로 구분되어 있다.
⚙️ 출력 : 각 테스트 케이스에 대해서 한 줄에 하나씩 차례대로 승자를 출력한다.
세준이가 이기면 S를 세비가 이기면 B를 둘다 아닐 경우에는 C를 출력한다.
1524번: 세준세비
첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 100보다 작거나 같다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 첫째 줄에 N과 M이 들어오고, 둘째 줄에는 세준이의 병사들의 힘이 들어
www.acmicpc.net
✅ 풀이
t = int(input())
for i in range(t):
input()
n, m = map(int, input().split())
ps = sorted(list(map(int, input().split())))
pb = sorted(list(map(int, input().split())))
while True:
if len(ps) == 0 or len(pb) == 0:
break
if ps[0] >= pb[0]:
pb.remove(pb[0])
else:
ps.remove(ps[0])
if len(ps) == 0:
print('B')
elif len(pb) == 0:
print('S')
else:
print('C')
💡 입력된 병사들의 힘을 기준으로 정렬해두게 되면
힘이 같은 경우 그 중에서 아무나 빠지면 되고, 아닌 경우 제일 약한 병사가 빠지면 되므로
패배한 쪽의 맨 앞 병사를 제거해주면 된다는 아이디어에서 시작했다.
양 측 제일 약한 병사들의 힘을 기준으로 더 약한 쪽을 제거해주었으며,
한쪽이라도 병사가 모두 제거당하면 승자를 출력하도록 했다.