https://www.acmicpc.net/problem/10815
<문제 해설>
N의 값이 큰것부터가 시간이 부족함을 암시한다. 따라서 바로 정렬할수는 없다.
크기가 10,000,001인 리스트를 양수하나 음수하나해서 2개만든다. 숫자 카드에 적혀있는 수를 index로 사용해서 숫자카드가 있는 리스트 index의 value를 i로 만들어준다. 그후 구분할 정수를 숫자카드가 있는 리스트에 넣어봐서 value가 0이 아니라면 답을 저장할 리스트에 1을 넣는 방식, value가 0이라면 0을 넣어준다.
<예시>
카드 : -1, 3, 2, -2
구분할 정수 : 0,2,-1,4
출력값 : 0 1 1 0
<코드>
import sys
N = int(sys.stdin.readline())
Plist = [0]*10000001
Mlist = [0]*10000001
numbers = list(map(int,sys.stdin.readline().split()))
zero = 0
for i in numbers:
if i <0:
Mlist[i] =i
elif i == 0:
zero = 1
else:
Plist[i] =i
answer = []
M = int(sys.stdin.readline())
numbers = list(map(int, sys.stdin.readline().split()))
for j in numbers:
check = 0
if j == 0:
if zero == 1:
check = 1
answer.append(1)
elif j > 0:
if Plist[j] != 0:
check = 1
answer.append(1)
else:
if Mlist[j] != 0 :
check = 1
answer.append(1)
if check == 0:
answer.append(0)
print(*answer)
<코드 설명>
import sys :sys라이브러리를 사용하기 위해서 import
N = int(sys.stdin.readline()) : 값 int(정수)형으로 받아오기
Plist = [0]*10000001 : 양수를 저장할 리스트
Mlist = [0]*10000001 : 음수를 저장할 리스트
numbers = list(map(int,sys.stdin.readline().split())) :수들을 리스트형태로 받아올 변수
zero = 0 :양수 음수리스트만있으니 0을 저장할 변수
for i in numbers: : 수들받아온 리스트를 하나씩 읽어 i에 넣기
if i <0: :수가 0보다 작다면
Mlist[i] =i :음수리스트 index i의 value를 i로 만든다
elif i == 0: :i가 0이라면
zero = 1 :zero 를 1로 표시해 0이있었음을 나타낸다
else: :수가 0보다 클경우
Plist[i] =i :양수리스트 index i의 value를 i로 만든다
answer = [] :출력할 답을 저장할 리스트
M = int(sys.stdin.readline()) :M값을 받아오는 변수
numbers = list(map(int, sys.stdin.readline().split())) :수들을 리스트형태로 받아올 변수
for j in numbers: :수들받아온 리스트를 하나씩 읽어 j에 넣기
check = 0 :카드가 공백인지 알려줄 check하는 변수
if j == 0: :만약 j가 0일경우
if zero == 1: :전에 저장한 zero가 1이면 zero카드가 있는것이니
check = 1 :카드가공백이아니며
answer.append(1) :답을 저장하는 리스트에 1넣어주기
elif j > 0: :j가 양수면
if Plist[j] != 0: :양수리스트에서 j index의 value가 0이 아닌지 검사
check = 1 :아닐경우 카드가 있는거니 공백이아니며
answer.append(1) :답을 저장하는 리스트에 1넣어주기
else:
if Mlist[j] != 0 : :양수리스트와 작동방식이 같다
check = 1
answer.append(1)
if check == 0: :만약 카드가 공백아라면
answer.append(0) :답을 저장하는 리스트에 1넣어주기
print(*answer) :리스트 *붙여서 특수문자 삭제하고 출력
'Coding Test > Python' 카테고리의 다른 글
[Python/백준] 10828 스택 (0) | 2023.01.11 |
---|---|
[Python/백준] 2869 달팽이는 올라가고 싶다 (1) | 2023.01.11 |
[Python/백준] 5430 AC (0) | 2023.01.11 |
[Python/백준] 2751 수 정렬하기 2 (0) | 2023.01.08 |
[Python/백준] 2750 수 정렬하기 (0) | 2023.01.08 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간