본문 바로가기
백준알고리즘/정수론 및 조합론

(Python/🥈1)백준리즘알고리즘 20592번: 가장 가까운 세 사람의 심리적 거리

by windy7271 2024. 5. 27.
728x90
반응형

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

문제 바로가기 

 

문제:

ChatGPT 여러분은 요즘 유행하는 심리검사인 MBTI에 대해 들어보았는가? MBTI(Myers-Briggs Type Indicator)는 C.G.Jung의 심리유형론을 근거로 하여 Katharine Cook Briggs와 Isabel Briggs Myers가 보다 쉽고 일상생활에 유용하게 활용할 수 있도록 고안한 자기보고식 성격유형지표이다. (출처: 위키백과) MBTI는 아래와 같이 네 가지 척도로 사람들의 성격을 구분한다. 외향(E) / 내향(I) 감각(S) / 직관(N) 사고(T) / 감정(F) 판단(J) / 인식(P) 각 척도마다 두 가지 분류가 존재하므로,

MBTI는 총 2^4 = 16가지 유형이 있음을 알 수 있다. 일반적으로 MBTI의 유형들은 각 분류를 나타내는 알파벳 한 글자씩을 따 네 글자로 표시하게 된다.

모든 유형의 목록은 다음과 같다. ISTJ, ISFJ, INFJ, INTJ, ISTP, ISFP, INFP, INTP, ESTP, ESFP, ENFP, ENTP, ESTJ, ESFJ, ENFJ, ENTJ MBTI 성격 유형을 이용하면 두 사람 사이의 심리적인 거리를 정의할 수 있다.

이는 두 사람의 MBTI 유형에서 서로 다른 분류에 속하는 척도의 수로 정의된다. 예를 들어, MBTI 유형이 ISTJ인 사람과 ISFJ인 사람 사이의 거리는 1이며, INTP인 사람과 ENTJ인 사람 사이의 거리는 2이다. 이 정의를 확장해서 세 사람 사이의 심리적인 거리도 정의할 수 있다. 세 사람 A, B, C가 있을 때 이들의 심리적인 거리는

( A와 B 사이의 심리적인 거리) + ( B와 C 사이의 심리적인 거리) + ( A와 C 사이의 심리적인 거리) 로 정의한다.

대학교에서 심리학 교수로 일하는 종서는 자신이 가르치는 학생들의 심리적인 특성을 분석하고 싶어한다. 오늘이 생일인 종서를 위해 N명의 학생들의 MBTI 유형이 주어질 때, 가장 가까운 세 학생 사이의 심리적인 거리를 구해보자.

입력:

첫 줄에는 테스트 케이스의 수를 나타내는 정수 $T$가 주어진다. 각 테스트 케이스의 첫 줄에는 학생의 수를 나타내는 하나의 정수 N이 주어지며, 두 번째 줄에는 각 학생의 MBTI 성격 유형을 나타내는 문자열들이 사이에 공백을 두고 주어진다.

 

출력:

각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다.

 

풀이:

import sys
from itertools import combinations

sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')

T = int(input())

for _ in range(T):
    res = 1e9
    N = int(input())
    lst = list(map(str, sys.stdin.readline().rstrip().split(" ")))

    if N >= 33:
        print(0)
    else:
        for comb in list(combinations(lst, 3)):
            score = 0
            for r in range(4):
                if comb[0][r] != comb[1][r]:
                    score += 1
                if comb[0][r] != comb[2][r]:
                    score += 1
                if comb[1][r] != comb[2][r]:
                    score += 1
            res = min(score, res)
        print(res)

 

 

mbti개수는 16개이다

그럼 33개 이상이면 무조건 겹치는 mbti가 3개가 이상이 되므로

 

동일한 mbti가 3개이면 0 으로 되기 때문에 그것만 체크해주면 된다.

 

반응형

댓글