문준영
새벽 코딩
문준영
전체 방문자
오늘
어제
  • 분류 전체보기
    • 웹 개발
    • JAVA
      • 기본 문법 내용 정리
      • 함수 내용 정리
      • 쉽게 배우는 자바 프로그래밍 문제 풀이
    • HTML
      • HTML
      • CSS
      • 문제풀이
    • JavaScript
    • MYSQL
    • C
      • 기본 문법 내용 정리
      • 백준 알고리즘 (c언어)
      • 자료구조
    • Python
      • 참고 알고리즘
      • 기본 문법 내용 정리
      • 자료구조 내용 정리
      • 백준 알고리즘 (파이썬)
    • 깃허브
    • 멀티잇 풀스택

티스토리

hELLO · Designed By 정상우.
문준영

새벽 코딩

Python/백준 알고리즘 (파이썬)

브루트 포스 practice 03_ 덩치

2021. 8. 11. 12:45

백준 7568번

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

 

7568번: 덩치

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

www.acmicpc.net

1. 문제

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 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명으로 이루어진 집단에서 각 사람의 덩치와 그 등수가 표시된 표이다.

이름(몸무게, 키)덩치 등수

A (55, 185) 2
B (58, 183) 2
C (88, 186) 1
D (60, 175) 2
E (46, 155) 5

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

 

 

2. 내가 작성한 알고리즘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n=int(input())
arr=[]
for i in range(n):
      a,b=map(int,input().split())
      arr.append([a,b])
 
 
arr2=[]
for i in range(n):
      count=1
      for j in range(n):
          if arr[i][0] < arr[j][0] and arr[i][1] < arr[j][1]:
                count+=1
      arr2.append(count)
 
for d in arr2:
      print(d,end=" ")
 
Colored by Color Scripter
cs

 

3. 이번 알고리즘을 통해 배운 점

여러 입력을 할 경우 변수의 개수를 알고 있으면 map함수를 변수의 개수를 모르면 list와 map함수를 사용해야 한다는 것을 알았다. 이 문제의 접근은 "몸무게와 키 둘다 컸을 시 등수를 카운트" 에 있다. 각 키와몸무게에 for문을 돌려 조건에 해당될 때 카운트를 늘려 등수를 매긴다.

배열의 생김새는 다음과 같다.

[0,0] 55 [0,1] 185
[1,0] 58 [1,1] 183
[2,0] 88 [2,1] 186
[3,0] 60 [3,1] 175
[4,0] 46 [4,1] 155

[0,0,] 55를 기준으로 반복문을 돌려 자기보다 높은 수가 있으며,

[0,1] 185를 기준으로 반목문을 돌려 자기보다 높은 수가 있으면

count가 1증가.

-> arr2배열에 count를 저장.

... 반복

 

'Python > 백준 알고리즘 (파이썬)' 카테고리의 다른 글

동적 계획법 practice_02 가장 큰 부분 합 찾기  (0) 2022.06.23
동적 계획법 practice01_1로 만들기  (0) 2022.06.22
스택 practice 01 _ 균형잡힌 세상  (0) 2021.08.09
기본 수학 practice 04_ ACM 호텔  (0) 2021.07.21
기본 수학 practice 04_ 달팽이는 올라가고 싶다.  (0) 2021.07.20
    'Python/백준 알고리즘 (파이썬)' 카테고리의 다른 글
    • 동적 계획법 practice_02 가장 큰 부분 합 찾기
    • 동적 계획법 practice01_1로 만들기
    • 스택 practice 01 _ 균형잡힌 세상
    • 기본 수학 practice 04_ ACM 호텔
    문준영
    문준영
    공부한 내용 정리!

    티스토리툴바