본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 1296 데이트 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 27.
728x90
반응형

BaekJoon 백준 1296 데이트 문제는 좋아하는 여자 N명 중에 한 명과 함께 데이트하러 나가고 싶어 한다. 사랑 계산기는 두 사람의 이름을 이용해서 두 사람이 성공할 확률을 계산해 준다. 성공할 확률이 가장 높은 여자의 이름을 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 1296 데이트 문제 정보

출처

- https://www.acmicpc.net/problem/1296

알고리즘 분류

- 문자열 string, 구현

난이도

- 브론즈 1 / Bronze 1

 

데이트 문제 요약

  • 오민식은 자기가 좋아하는 여자 N명 중에 한 명과 함께 데이트하러 나가고 싶어 한다.
  • 하지만 N명 모두를 사랑하는 오민식에게는 한 명을 선택하고 나머지 여자를 버리는 것은 슬픈 결정이기 때문에 누구를 선택해야 할지 고민에 빠졌다.
  • 마침 오민식은 사랑 계산기를 얻었다. 사랑 계산기는 두 사람의 이름을 이용해서 두 사람이 성공할 확률을 계산해 준다. 사랑 계산기는 다음과 같이 작동한다.
    • L = 두 사람 이름에서 등장하는 L의 개수
    • O = 두 사람 이름에서 등장하는 O의 개수
    • V = 두 사람 이름에서 등장하는 V의 개수
    • E = 두 사람 이름에서 등장하는 E의 개수
  • 위의 개수를 모두 계산한 후에 확률 계산은 다음과 같이 한다.
  • ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E)) mod 100
  • 오민식의 영어 이름과 나머지 여자들의 이름이 주어졌을 때, 오민식과 성공할 확률이 가장 높은 여자의 이름을 출력하는 프로그램을 작성하시오. 여러 명일 때에는 알파벳으로 가장 앞서는 이름을 출력하면 된다.
  • N은 50보다 작거나 같고, 모든 이름은 알파벳 대문자로만 구성되어 있고 모두 길어야 20글자이다.

 

문제 풀이 과정

  1. 여자들의 이름을 입력받고, 알파벳 빠른 순으로 오름차순 정렬한다.
  2. 모든 여자들의 이름을 돌아가면서 L, O, V, E를 모두 계산한다.
  3. 확률을 계산하여 저장한다.
  4. 확률이 가장 높은 여자의 이름 중 알파벳으로 가장 앞서는 이름을 출력한다.

 

코드 및 설명
manName = input()
womenName = []
percent = []
for i in range(int(input())):
    womenName.append(input())
womenName.sort()

for w in womenName:
    L = w.count('L') + manName.count('L')
    O = w.count('O') + manName.count('O')
    V = w.count('V') + manName.count('V')
    E = w.count('E') + manName.count('E')

    percent.append(((L + O) * (L + V) * (L + E) * (O + V) * (O + E) * (V + E)) % 100)

print(womenName)
print(percent)
print(womenName[percent.index(max(percent))])

BaekJoon 백준 1296 데이트 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글