Python - 알고리즘 (순위)

2024. 2. 26. 15:31·IT/Python
목차
  1. 순위란?
  2. 실습
  3. 프로그램 구현

순위란?

  • 수의 크고 작음을 이용해서 수의 순서를 정하는 것을 순위라고 한다.
50~100가지의 수 중 랜덤으로 20개뽑고 그 안에서 순위 정하는거
import random nums = random.sample(range(50,101), 20) ranks = [ 0 for i in range(20)] # 0, 20개 만들기 print(f'nums: {nums}') print(f'ranks: {ranks}') for idx, num1 in enumerate(nums): # nums 리스트의 각 요소(num1)와 그 인덱스(idx)를 순회 ​​​​for num2 in nums: # nums 리스트의 모든 요소(num2)를 다시 순회 ​​​​​​​​if num1 < num2: # 만약 현재 요소(num1)가 비교 대상(num2)보다 작으면 ​​​​​​​​​​​​ranks[idx] += 1 # 현재 요소의 순위를 나타내는 ranks의 해당 인덱스 값을 1 증가 print(f'nums: {nums}') print(f'ranks: {ranks}') for idx, num in enumerate(nums): ​​​​print(f'num : {num} \t rank: {ranks[idx] + 1}')

결과


실습

학급 학생 (20명)들의 중간고사와 기말고사 성적을 이용해서 각각의 순위를 구하고, 중간고사 대비 기말고사 순위 변화(편차)를 출력하는 프로그램을 만들어보자. (시험 성적은 난수를 이용)

프로그램 구현

1. 클래스 정의: RankDeviation 클래스를 정의하여, 중간고사 점수(midStuScos), 기말고사 점수(endStuScos), 각 시험의 순위(midRanks, endRanks), 그리고 순위 편차(rankDeviation)를 관리
2. 순위 계산 메소드: setRank 메소드를 이용해 주어진 점수 리스트에 대한 순위를 계산하고, 이를 해당 순위 리스트에 저장
3. 순위 편차 출력: printRankDeviation 메소드에서는 중간고사 대비 기말고사의 순위 편차를 계산하고, 이를 '상승' 또는 '하향'으로 표현하여 출력

class RankDeviation: ​​​​def __init__(self, mss, ess): ​​​​​​​​self.midStuScos = mss ​​​​​​​​self.endStuScos = ess ​​​​​​​​self.midRanks = [0 for i in range(len(mss))] ​​​​​​​​self.endRanks = [0 for i in range(len(ess))] ​​​​​​​​self.rankDeviation = [0 for i in range(len(ess))] #편차 ​​​​def setRank(self,ss,rs): #ss = 점수 rs = 순위 ​​​​​​​​for idx, scol in enumerate(ss): ​​​​​​​​​​​​for sco2 in ss: ​​​​​​​​​​​​​​​​if scol < sco2: ​​​​​​​​​​​​​​​​​​​​rs[idx] += 1 ​​​​def setMidRank(self): ​​​​​​​​self.setRank(self.midStuScos, self.midRanks) ​​​​def getMidRank(self): ​​​​​​​​return self.midRanks ​​​​def setEndRank(self): ​​​​​​​​self.setRank(self.endStuScos, self.endRanks) ​​​​def getEndRank(self): ​​​​​​​​return self.endRanks ​​​​def printRankDeviation(self): #편차출력 ​​​​​​​​for idx, mRank in enumerate(self.midRanks): ​​​​​​​​​​​​deviation = mRank - self.endRanks[idx] # 중간고사에서 기말고사 성적뺀거 ​​​​​​​​​​​​if deviation > 0: ​​​​​​​​​​​​​​​​deviation = '상승' + str(abs(deviation)) ​​​​​​​​​​​​elif deviation < 0: ​​​​​​​​​​​​​​​​deviation = '하향' + str(abs(deviation)) ​​​​​​​​​​​​print(f'mid_rank: {mRank}\t end_rank: {self.endRanks[idx]} \t Deviation : {deviation}')

실행파일

import rank as rm import random midStuScos = random.sample(range(50,101), 20) endStuScos = random.sample(range(50,101), 20) rd = rm.RankDeviation(midStuScos, endStuScos) rd.setMidRank() print(f'midStuScors: {midStuScos}') print(f'mid_rank: {rd.getMidRank()}') rd.setEndRank() print(f'endStuScors: {endStuScos}') print(f'end_rank: {rd.getEndRank()}') rd.printRankDeviation()

결과

반응형
저작자표시 비영리 변경금지 (새창열림)

'IT > Python' 카테고리의 다른 글

Python - 알고리즘 (최댓값,최솟값,최빈값,근삿값,평균)  (0) 2024.02.27
Python - 알고리즘 (버블정렬,삽입정렬,선택정렬)  (1) 2024.02.26
Python - 알고리즘 (선형검색,이진검색)  (1) 2024.02.26
Python - 자료구조  (0) 2024.02.22
[Python] 동시성 프로그래밍과 병렬성 프로그래밍  (1) 2024.02.19
  1. 순위란?
  2. 실습
  3. 프로그램 구현
'IT/Python' 카테고리의 다른 글
  • Python - 알고리즘 (최댓값,최솟값,최빈값,근삿값,평균)
  • Python - 알고리즘 (버블정렬,삽입정렬,선택정렬)
  • Python - 알고리즘 (선형검색,이진검색)
  • Python - 자료구조
생각 기록실
생각 기록실
AI(LLM)와 서비스 기획을 공부하며 작성하는 기술 블로그입니다. (feat. 영화리뷰를 곁들인..)
    반응형
  • 생각 기록실
    이러쿵 저러쿵
    생각 기록실
  • 전체
    오늘
    어제
  • 링크

    • Github
    • LindeIn
    • 분류 전체보기 (115)
      • 이러쿵 저러쿵 (5)
      • 정보통계 (7)
        • 데이터마이닝 (2)
        • 금융공학 (4)
      • IT (26)
        • Python (10)
        • AWS (5)
        • Github (2)
        • Project (8)
      • 리뷰 (29)
        • 영화 (22)
        • 책 (7)
      • 기타 (48)
  • hELLO· Designed By정상우.v4.10.3
생각 기록실
Python - 알고리즘 (순위)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.