STUDY/Algorithm

[백준] 1268. 임시반장 구하기

sinawi95 2021. 2. 2. 22:00
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