본문 바로가기
BOJ/[BOJ] Python

백준 7568번 풀이

by Lv. 35 라이츄 2022. 8. 19.

문제

https://www.acmicpc.net/problem/7568

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

키와 몸무게를 이용해 덩치 등수를 산출한다.

 

Reference

https://bgspro.tistory.com/61

 

백준 알고리즘 7568: 덩치(Python)

www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,

bgspro.tistory.com

 

풀이

지금은 출석번호를 가나다순으로 매기지만(근데 대학 학번은 또 가나다순이 아님) 예에에에에에에에에전에는 키순으로 매겼었다. 나도 1학년때는 키순이었던걸로 기억함… 그래서 지금은 출석번호가 뒤쪽입니다 그러면 이름이 최씨 하씨 뭐 이런… 자음 순서에서도 뒤쪽이구나 하지만(보통 황씨, 황보씨가 맨 뒤) 예전같았으면 뭘 먹고 키가 그렇게 크셨어요? 했다.

당시에는 키가 비슷해보이는 애들끼리 비교했지만 이게 브루트 포스의 특성(개 노가다)과 맞물리면 이제 대단위 비교가 들어가게 된다. 


일단 입력 인자가 키랑 몸무게 두 개이다. 그러면 어캄? 아 어레이 불러야죠.

import sys
a = int(sys.stdin.readline().strip())
array = [[0 for i in range(a)] for j in range (a)]
for i in array:
    for j in i:
        print(j,end="")
    print()

Array는 이런 식으로 불러오는 게 맞다. 근데 키와 몸무게 두 개만 입력받는거고, 그 리스트를 a(입력값)만큼 층층이 쌓는… 그런 2차원 어레이를 만들거기때문에 컬럼값이 고정된다. 즉

import sys
a = int(sys.stdin.readline().strip())
array = [[0 for i in range(2)] for j in range (a)]
for i in array:
    for j in i:
        print(j,end="")
    print()

입력값이 n일 때, 우리는 2 * n 배열을 만들 것이다. (컬럼/로우)

import sys
a = int(sys.stdin.readline().strip())
array = [[list(map(int, sys.stdin.readline().split()))] for j in range (a)]
for i in array:
    for j in i:
        print(j,end="")
    print()

키랑 몸무게를 입력받을거니까 이렇게 해 주자. 다음으로는 덩치 등수를 매길건데… 일단 예시를 보자.

어? 왜 3등 아니고 5등임? 그건 문제에 나와있다. ‘덩치 등수는 나보다 덩치 큰 사람 k명 +1’이고, E는 5명 중 덩치가 제일 작으니까 자기보다 큰 사람이 4명 있어서 5등이다. 2등 세명은 씁 애매한데? 라고 보면 된다. 문제에서는 키와 몸무게 둘 다 클 때 덩치가 크다고 정의하고 있는데, 한 쪽은 크나 한 쪽이 작은 경우에는 비교하기 애매하기 때문. 체적을 비교하죠 어떻게요 아르키메데스좌 출동 

import sys
a = int(sys.stdin.readline().strip())
array = [list(map(int, sys.stdin.readline().split())) for j in range (a)]
ans = []
for i in range(a):
    count = 0
    for j in range(a):
        if array[i][0] < array[j][0] and array[i][1] < array[j][1]:
            count += 1
    ans.append(count+1)

for k in ans:
    print(k,end=" ")

그니까 나보다 큰 사람이 몇 명인가’만’ 세면 된다. 그 count를 배열에 넣으면 되고, 그 배열을 end=” “로 뽑으면 된다. 엥? 그거 공백 빼면 안돼요? end=””로 하면 숫자 다 붙어서 나온다.

11
1.2 55.5 #텅비드
2.4 333.6 #매시붕
1.8 25.0 #페로코체
3.8 100.0 #전수목
9.2 999.9 #철화구야
0.3 0.1 #종이신도
5.5 888.0 #악식킹
0.6 1.8 #베베놈(베베벱베)
3.6 150.0 #아고용
5.5 820.0 #차곡차곡(이름임)
1.8 13.0 #두파팡(대왕츕팝츕스)
7 4 7 4 1 11 2 10 4 2 7

float로 바꾸고 울비들 덩치 등수 매긴 결과. 순서는 도감 번호다. 울비들 덩치는 철화구야 > 악식킹/차곡차곡 > 매시붕/전수목/아고용 > 텅비드/페로코체/두파팡 > 베베놈 > 종이신도.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 25304번 풀이  (0) 2022.08.20
백준 3003번 풀이  (0) 2022.08.20
백준 2231번 풀이  (0) 2022.08.19
백준 2798번 풀이  (0) 2022.08.19
백준 11729번 풀이  (0) 2022.08.19

최근댓글

최근글

skin by © 2024 ttutta