[백준] 7568번 - 덩치 (파이썬)

2022. 8. 11. 22:15·🎲 알고리즘 공부/백준

> 

[문제 요약]

각각 키와 몸무게를 알려줄테니, 덩치 등수를 매겨라. 덩치 등수는 자기보다 덩치가 확실히 더 큰 사람이 몇 명있냐가 기준이다.

 

[문제]

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

 

두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다.

 

그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 때 C와 D는 누구도 상대방보다 더 크다고 말할 수 없다.

 

N명의 집단에서 각 사람의 덩치 등수는 자신보다 더 "큰 덩치"의 사람의 수로 정해진다. 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다. 이렇게 등수를 결정하면 같은 덩치 등수를 가진 사람은 여러 명도 가능하다.

 

아래는 5명으로 이루어진 집단에서 각 사람의 덩치와 그 등수가 표시된 표이다.

 

등수 표

위 표에서 C보다 더 큰 덩치의 사람이 없으므로 C는 1등이 된다. 그리고 A, B, D 각각의 덩치보다 큰 사람은 C뿐이므로 이들은 모두 2등이 된다. 그리고 E보다 큰 덩치는 A, B, C, D 이렇게 4명이므로 E의 덩치는 5등이 된다. 위 경우에 3등과 4등은 존재하지 않는다. 여러분은 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다.

 

 

입출력 예시

 

 

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

 

7568번: 덩치

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

www.acmicpc.net

 

 


🎨 풀이

💡 전체 코드

import sys

n = int(input())
people = []
result = []

for _ in range(n):
    people.append(list(map(int,sys.stdin.readline().split())))

for i in range(len(people)):
    kg = people[i][0]
    cm = people[i][1]
    count = 0
    for j in range(len(people)):
        if kg < people[j][0] and cm < people[j][1]:
            count += 1
    result.append(count+1)

for i in range(len(result)):
    print(result[i], end =' ')

> 핵심 :for문 사용

           

🍦 코드 설명 (실행 순서대로 나열)

# main

n = int(input())
people = []
result = []

1. n을 입력받는다.

 - n : 사람 수

 

* 그 외 변수

 - people : 사람의 키와 몸무게를 담아둘 리스트

 - result : 각 사람의 덩치 등수를 담아둘 리스트 (결과값)

 

@ for문 (2번~3번)

for _ in range(n):
    people.append(list(map(int,sys.stdin.readline().split())))

2. for문을 실행한다. (n번)

3. 몸무게와 키를 리스트로 묶은 후 그대로 people에 추가해준다.

 - ex) people = [[55,185], [58,183]]

 

@ 2중 for문 (4번~9번)

for i in range(len(people)):
    kg = people[i][0]
    cm = people[i][1]
    count = 0
    for j in range(len(people)):
        if kg < people[j][0] and cm < people[j][1]:
            count += 1
    result.append(count+1)

4. for문을 실행한다. (len(people)번)

5. kg, cm에 각각 몸무게와 키 값을 담아준다.

6. count를 0으로 초기화한다.

 

7. for문을 실행한다. (len(people)번) (7번~8번)

 - 한명을 기준으로 두고, 다른 사람들과 쭉 비교하기 위함임.

8. 만약, kg < people[j][0] and cm < people[j][1] 이라면 count += 1 을 해준다.

 - kg와 cm는 현재 선택된 사람이고, people[j]는 비교할 다른 사람이다. 

 

9. result에 count+1을 추가해준다.

 - count가 1부터 시작하기 때문임! (지금 생각해보니 애초에 count를 1로 초기화해도 될 것 같긴 하다)

 

@ for문 (10번~11번)

for i in range(len(result)):
    print(result[i], end =' ')

10. for문을 실행한다. (result 길이 만큼)

11. result[i]를 출력한다.

 - 여기서는 end = ' ' 를 이용해 한 줄에 출력해줘야한다.


​끝~

 

⭐ 느낀점

> for문을 너무 많이 써서.. 이래도 되나 싶었는데 이래도 되긴 하네. 신기하구만 하하. 굿이다 굿

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (파이썬)  (0) 2022.08.14
[백준] 10156번 - 과자 (파이썬)  (0) 2022.08.13
[백준] 2775번 - 부녀회장이 될테야 (파이썬)  (0) 2022.08.10
[백준] 2798번 - 블랙잭 (파이썬)  (0) 2022.08.10
[백준] 10039번 - 평균 점수 (파이썬)  (0) 2022.08.08
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (파이썬)
  • [백준] 10156번 - 과자 (파이썬)
  • [백준] 2775번 - 부녀회장이 될테야 (파이썬)
  • [백준] 2798번 - 블랙잭 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    컨텐더스
    코드업
    nodejs
    스프링부트
    신입일기
    codeup
    스프링 부트
    오버워치
    오블완
    티스토리챌린지
    정처기
    til
    일기
    찬양추천
    코민이
    코린이
    프로그래머스
    행렬덧셈
    코테
    카카오
    백준
    파이썬
    연습문제
    폰켓몬
    50문답
    충무로
    정보처리기사
    피보나치수
    BOJ
    6월 목표
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 7568번 - 덩치 (파이썬)
상단으로

티스토리툴바