coding test - python/백준

백준 / 1268번 임시 반장 정하기 / Python 파이썬

sillon 2025. 4. 2. 23:22
728x90
반응형

 

*문제 출처는 백준에 있습니다.

문제 제목: 1268번 임시 반장 정하기

문제 사이트:https://www.acmicpc.net/problem/1268


다른 학년에 서로 같은 반을 해도

점수는 한번만 들어감

따라서 각 학년별로 1번학생과 2번학생 (예시)가 1학년때부터 5학년 때까지 같은 반을 해도

1번 학생의 아는 사람은 2번학생 한명뿐임 (score)

 

나의 풀이

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
maps = []
for i in range(n):
    maps.append(list(map(int,input().split())))

# 각 학생이 전체 학생 중에서 같은 반이였던 학생 수가 많은지 확인

student = [0]*n
for i in range(n):
 for j in range(n):
     if i == j:
         continue
     for k in range(5):
         if maps[i][k] == maps[j][k]:
             student[i]+= 1
             break

print(student.index(max(student)) + 1)

 

최적화할 수 있을 것 같아서 for 문에서 범위만 바꿔줬다.

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
maps = []
for i in range(n):
    maps.append(list(map(int,input().split())))

# 각 학생이 전체 학생 중에서 같은 반이였던 학생 수가 많은지 확인

student = [0]*n
for i in range(n):
 for j in range(i+1,n):
     if i == j:
         continue
     for k in range(5):
         if maps[i][k] == maps[j][k]:
             student[i]+= 1
             student[j] += 1
             break

print(student.index(max(student)) + 1)


두번째 풀이는 3중 ㅍfor문이라도 

728x90
반응형