
골드5 문제이다.

코드
dictionary = []
puzzels = []
flag = True
while True:
s = input()
if s == '#':
break
if s == '-':
flag = False
continue
if flag:
dictionary.append(s)
else:
puzzels.append(s)
for puzzel in puzzels:
candidates = []
for word in dictionary:
puzzel_list = list(puzzel)
flag = True
for i in range(len(word)):
if word[i] not in puzzel_list:
flag = False
break
else:
puzzel_list.remove(word[i])
if flag:
candidates.append(word)
arr = []
max_cnt = -1
min_cnt = 200001
for p in puzzel:
cnt = 0
for c in candidates:
if p in list(c):
cnt += 1
arr.append((p, cnt))
max_cnt = max(max_cnt, cnt)
min_cnt = min(min_cnt, cnt)
arr = list(set(arr))
arr.sort(key=lambda a: (a[1], a[0]))
min_results = ""
max_results = ""
for i in range(len(arr)):
if arr[i][1] == min_cnt:
min_results += arr[i][0]
# else if 쓰면 안됨 - 주의
if arr[i][1] == max_cnt:
max_results += arr[i][0]
print(min_results, min_cnt, max_results, max_cnt)
# https://www.acmicpc.net/problem/1148
이번 문제는 쉬웠다.
'알고리즘' 카테고리의 다른 글
[백준 브루토포스/백트래킹/비트마스킹] 가르침 (0) | 2024.05.07 |
---|---|
[leetcode/backtracking] 17. Letter Combinations of a Phone Number (0) | 2024.05.06 |
[백준 정렬] 강의실 배정 (0) | 2024.04.22 |
[PCCP 기출문제] 1번 / 붕대 감기 (자바스크립트 풀이) (0) | 2023.12.09 |
[코드트리] 겹쳐지지 않는 두 직사각형 풀이 (2) | 2023.11.07 |

골드5 문제이다.

코드
dictionary = []
puzzels = []
flag = True
while True:
s = input()
if s == '#':
break
if s == '-':
flag = False
continue
if flag:
dictionary.append(s)
else:
puzzels.append(s)
for puzzel in puzzels:
candidates = []
for word in dictionary:
puzzel_list = list(puzzel)
flag = True
for i in range(len(word)):
if word[i] not in puzzel_list:
flag = False
break
else:
puzzel_list.remove(word[i])
if flag:
candidates.append(word)
arr = []
max_cnt = -1
min_cnt = 200001
for p in puzzel:
cnt = 0
for c in candidates:
if p in list(c):
cnt += 1
arr.append((p, cnt))
max_cnt = max(max_cnt, cnt)
min_cnt = min(min_cnt, cnt)
arr = list(set(arr))
arr.sort(key=lambda a: (a[1], a[0]))
min_results = ""
max_results = ""
for i in range(len(arr)):
if arr[i][1] == min_cnt:
min_results += arr[i][0]
# else if 쓰면 안됨 - 주의
if arr[i][1] == max_cnt:
max_results += arr[i][0]
print(min_results, min_cnt, max_results, max_cnt)
# https://www.acmicpc.net/problem/1148
이번 문제는 쉬웠다.
'알고리즘' 카테고리의 다른 글
[백준 브루토포스/백트래킹/비트마스킹] 가르침 (0) | 2024.05.07 |
---|---|
[leetcode/backtracking] 17. Letter Combinations of a Phone Number (0) | 2024.05.06 |
[백준 정렬] 강의실 배정 (0) | 2024.04.22 |
[PCCP 기출문제] 1번 / 붕대 감기 (자바스크립트 풀이) (0) | 2023.12.09 |
[코드트리] 겹쳐지지 않는 두 직사각형 풀이 (2) | 2023.11.07 |