728x90
N = int(input())
list_2 = []
for _ in range(N):
list_2.append(list(map(int,input().split())))
# list_2= [[2, 3, 1, 7, 3], [4, 1, 9, 6, 8], [5, 5, 2, 6, 4], [6, 5, 2, 6, 7], [8, 4, 2, 2, 2],[5, 5, 2, 4, 4]]
# N=len(list_2)
student=[] # 학생별로 겹치는 학생을 저장
for i in range(N):
student.append([]*5)
tmp1=[] # i,j => j,i
for i in range(5):
tmp2 = []
for j in range(N):
tmp2.append(list_2[j][i])
tmp1.append(tmp2)
for i, list_1 in enumerate(tmp1): # 자신을 포함하여 겹치는 반인 경우 student에 저장
for j, val1 in enumerate(list_1):
for k, val2 in enumerate(list_1):
if val1 == val2:
student[j].append(k)
tmp = []
for idx, std in enumerate(student): # 막무가내로 넣었으니까 중복 제거
tmp.append((idx+1,len(set(std))))
tmp.sort(key=lambda x: x[1], reverse=True) # 정렬해서 가장 큰값 찾고
print(tmp[0][0]) # 그때 인덱스 출력
오늘 머리가 안돌아가서 그냥 막무가내 식으로 풀었다. 풀이는 그냥 주석으로 대체한다
원래는 타인의 코드도 씹고 뜯고 맛보고 즐기고 해야하지만 더이상 보고싶지 않다.
N = int(input())
list_2 = []
for _ in range(N):
list_2.append(list(map(int,input().split())))
student=[] # 학생별로 겹치는 학생을 저장
for i in range(N):
student.append(set()) #set으로 지정
tmp1=[] # i,j => j,i
for i in range(5):
tmp2 = []
for j in range(N):
tmp2.append(list_2[j][i])
tmp1.append(tmp2)
for i, list_1 in enumerate(tmp1): # 자신을 포함하여 겹치는 반인 경우 student에 저장
for j, val1 in enumerate(list_1):
for k, val2 in enumerate(list_1):
if val1 == val2:
student[j].add(k)
max_idx, max_val = 0,0
for idx, val in enumerate(student):
len_val = len(val)
if len_val>max_val:
max_idx = idx+1
max_val = len_val
print(max_idx)
아침에 조금더 고쳤다. 처음부터 set을 사용해서 중복을 제거해주면서 하였고 메모리를 반이상 줄였다! 그래도 뭔가 부족하다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 2960 에라토스테네스의 체 (0) | 2021.02.03 |
---|---|
[백준] 1032 명령프롬프트 (0) | 2021.02.03 |
[백준] 2941 크로아티아 알파벳 (0) | 2021.02.01 |
[백준] 10809 알파벳 찾기 (0) | 2021.02.01 |
[백준] 1157 단어 공부 (0) | 2021.02.01 |