https://www.acmicpc.net/problem/5597
https://www.acmicpc.net/problem/5597
Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.net문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
입력
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
출력
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
아래는 제가 짜본 코드입니다..
계속해서 고민해서 짠 코드인데 더 이상은 답이 안나오네요...
도와주시면 계신 곳으로 절 200번 올리겠습니다!!
s_list=[0]*28 #2명이 빠진 출석부
j_list=[0]*30 #출석부와 비교할 리스트
absen_per=[0]*2
for i in range(28): #28번 반복하기
s_list = int(input()) #명단을 s_list에 삽입하기
for j in range(1,30+1): #30까지의 숫자 생성하기
j_list=j #j값을 j_list에 집어넣기]
#s_list와 j_list를 하나하나 비교하기 for문을 사용할 것
for i,j in s_list, j_list: #i,j리스트 반복문 돌리기
if s_list==j_list:#s/j리스트 반복
continue
else:
absen_per=i #일치하지 않을 시 결석한 사람 변수에 i값 할당
print(max(absen_per)) #absen_per변수에 최대값 출력
print(min(absen_per)) #absen_per변수에 최소값 출력
미리 숫자 30개 준비해놓고 입력 들어올때마다 하나씩 지운다는 아이디어로 하면 낫지않을까
가령 배열 30칸에 각각 1 넣어놓고 입력받을때마다 0넣는거임. 검사는 배열 순차탐색하면 시간복잡도 O(n)이겠네
파이썬 잘 모르는데 기본값 0으로 세팅돼있으면 입력받을때 1로 셋하고 0으로 남아있는애 탐지하면 좀더낫겠네
이 찐따같은 코드는 뭐냐 집합으로 1~30 넣어서 선언하고 인풋만빼면 됨
죄송합니다 형님.. 코딩 독학한지 얼마안됐어유
이런건 PS갤로
아 넵넵
그냥 검색하는게 더빠른데.. 풀이..