https://www.acmicpc.net/problem/2991
소스 코드는 다음과 같다.
a,b,c,d = list(map(int, input().split()))
x,y,z = map(int, input().split())
dog_1 = []; dog_2 =[]
dog_1.extend([1]*a); dog_1.extend([0]*b)
dog_2.extend([1]*c); dog_2.extend([0]*d)
P = M = N = 0
if dog_1[x % len(dog_1)-1] == 1:
P += 1
if dog_2[x % len(dog_2)-1] == 1:
P += 1
if dog_1[y % len(dog_1)-1] == 1:
M += 1
if dog_2[y % len(dog_2)-1] == 1:
M += 1
if dog_1[z % len(dog_1)-1] == 1:
N += 1
if dog_2[z % len(dog_2)-1] == 1:
N += 1
print(P)
print(M)
print(N)
첫 번째 개가 2분 동안 공격적이고([1]), 2분 동안 조용히 쉬고 있다면([0]) dog_1 = [1,1,0,0] 으로 나타낼 수 있고, 두 번째개도 3분 동안 공격적이고, 3분 동안 조용히 쉬고 있다면 같은 방식으로 dog_2 = [1,1,1,0,0,0] 으로 나타낼 수 있다.
우체부이 도착한 시간 P = 1라고 할 때, 아침이 밝은 후 1분 뒤에 도착했다. 첫 번째 개는 처음 1분 동안 짖고 있는데, 1분이 끝날때 우체부가 도착했으므로 dog_1은 우체부를 향해 짖게 된다.
dog_2에 대해서 같은 방식으로 진행하면 dog_2는 우체부를 향해 짖는다는 것을 알 수 있고, 리스트로 확인하면 다음과같다.
참고: 개가 5분 동안 짖고, 5분 동안 쉬고 있을 때, 우체부가 5분 뒤에 도착한다면 개가 짖기 끝날 때 우체부가 도착하는 것인데, 이 경우에도 개는 우체부에게 짖는다고 본다.(입력값을 확인)
같은 방식으로 우유배달원, 신문배달원에 대해서 확인하면 된다.
a,b,c,d = list(map(int, input().split()))
x,y,z = map(int, input().split())
dog_1 = []; dog_2 =[]
dog_1.extend([1]*a); dog_1.extend([0]*b)
dog_2.extend([1]*c); dog_2.extend([0]*d)
P = M = N = 0
if dog_1[x % len(dog_1)-1] == 1:
P += 1
if dog_2[x % len(dog_2)-1] == 1:
P += 1
if dog_1[y % len(dog_1)-1] == 1:
M += 1
if dog_2[y % len(dog_2)-1] == 1:
M += 1
if dog_1[z % len(dog_1)-1] == 1:
N += 1
if dog_2[z % len(dog_2)-1] == 1:
N += 1
print(P)
print(M)
print(N)
dog_1이 a분 동안 짖고, b분 동안 쉬고 있다면 dog_1의 리스트에선 1의 개수가 a, 0의 개수가 b개만큼 있도록 만든다.
우체부는 1분에 왔을 때 dog_1[0]을 확인함으로 우체부가 P분 일땐 dog_1[P % len(dog_1) - 1]로 한다.
이렇게 된다면 dog_1 = [1,1,0.0]일때 P = 4라면 dog_1[4%4-1] = dog_1[-1] 이므로 마지막 요소를 확인하고, P = 6 이라면 dog_2[1]을 확인한도록 한다.
'컴퓨터 > BOJ' 카테고리의 다른 글
[BOJ](Python) 3049번 : 다각형의 대각선 (0) | 2020.08.29 |
---|---|
[BOJ](Python) 2998번 : 8진수 / deque 주의할 점 (0) | 2020.08.29 |
[BOJ](Python) 2851번 : 슈퍼 마리오 (0) | 2020.08.29 |
[BOJ](Python) 2053번 : 숫자 야구 (0) | 2020.08.29 |
[BOJ](Python) 2089번 : -2진수 (0) | 2020.08.29 |