-
[๋ฐฑ์ค] 1411 ๋น์ทํ ๋จ์ด with PythonPS 2021. 12. 12. 03:25728x90๋ฐ์ํ
๐ BOJ 1411 ๋น์ทํ ๋จ์ด
๐ก ์กฐ๊ฑด
๋ฌธ์์ด A๋ฅผ ์์ค๋ฝ๊ฒ ๋ฐ๊พธ์ด B๋ก ๋ง๋ค์๋ค๋ฉด, ๊ทธ ๋จ์ด๋ ๋น์ทํ ๋จ์ด๋ผ๊ณ ํ๋ค.
์์ค๋ฝ๊ฒ ๋ฐ๊พผ๋ค๋ ๊ฒ์ ๋จ์ด A์ ๋ฑ์ฅํ๋ ๋ชจ๋ ์ํ๋ฒณ์ ๋ค๋ฅธ ์ํ๋ฒณ์ผ๋ก ๋ฐ๊พผ๋ค.
๋จ์ด๊ฐ ์ฌ๋ฌ ๊ฐ ์ฃผ์ด์ก์ ๋, ๋ช ๊ฐ์ ์์ด ๋น์ทํ์ง ๊ตฌํ๋ ๋ฌธ์ .
๋จ์ด์ ๊ธธ์ด๋ ์ต๋ 50
N์ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
๋ชจ๋ ๋จ์ด์ ๊ธธ์ด๋ ๊ฐ๊ณ , ์ค๋ณต๋์ง ์๋๋ค.๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin from itertools import combinations words = [] res = set() tc = int(stdin.readline()) if tc == 1: print(res) else: for _ in range(tc): words.append(stdin.readline().rstrip()) for pair in list(set(combinations(words, 2))): change = dict() use = set() tf = True x, y = pair a, b = pair a, b = list(a), list(b) n, m = len(a), len(b) if n != m: continue else: for i in range(n): if a[i] != b[i] and b[i] not in use and a[i] not in change: change[a[i]] = b[i] use.add(b[i]) a[i] = b[i] else: if a[i] in change: a[i] = change[a[i]] else: if a[i] in use: tf = False break else: change[a[i]] = b[i] use.add(b[i]) if a == b and tf: res.add((x, y)) print(len(res))
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
12 cacccdaabc cdcccaddbc dcdddbccad bdbbbaddcb bdbcadbbdc abaadcbbda babcdabbac cacdbaccad dcddabccad cacccbaadb bbcdcbcbdd bcbadcbbca
์คํ๊ฒฐ๊ณผ
13
โจ๏ธ ๋ฌธ์ ํ์ด
๊ฐ๋ฅํ ๊ฐ ๋จ์ด๋ค์ ์์ combinations ํจ์๋ฅผ ์ฌ์ฉํด ๋ง๋ค๊ณ ์์ฐจ์ ์ผ๋ก ์ํํ๋ค.
์ด๋ฏธ ๋ณํํ๋ ๋จ์ด๋ฅผ ์ ์ฅํ ์งํฉ ์๋ฃํ use๋ฅผ ์์ฑํ๊ณ , ๋จ์ด์ ๊ธธ์ด๋งํผ ์ํํ๋ฉด์ ์๋์ ์กฐ๊ฑด์ ํด๋นํ๋์ง ํ์ธํ๋ค.
- ์ํํ๊ณ ์๋ ์ํ๋ฒณ์ด ์๋ก ๊ฐ์ง์๊ณ , a[i]๋ฒ ์งธ ๋จ์ด๊ฐ ์ฌ์ฉ๋์ง ์๊ณ , change์ ์๋ค.
2๋ฒ์ ์๋ ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ
change[a[i]] = b[i] use.add(b[i]) a[i] = b[i]
2๋ฒ์ ์๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ, a[i]๊ฐ change์ ์๋์ง ํ์ธํ๋ค.
- ์ฐธ์ผ ๊ฒฝ์ฐ, a[i] = change[a[i]]
4๋ฒ์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ, a[i]๊ฐ use์ ์๋์ง ํ์ธํ๋ค.
- ์๋ ๊ฒฝ์ฐ์ tf๋ฅผ False๋ก ์ ์ฅํ๊ณ , ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ๋ค.
- ์๋ ๊ฒฝ์ฐ๋ ์๋์ ์ฝ๋๋ฅผ ์คํํ๋ค.
change[a[i]] = b[i] use.add(b[i])
์ํ๋ฅผ ๋ง์น๋ฉด a์ b๊ฐ ๊ฐ์์ง, tf๊ฐ True์ธ์ง ํ์ธํ๋ค.
์ฐธ์ด๋ฉด, ๋ฌธ์์ด ์์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
๐พ ๋๋์
- ์ค๋ฒ II ํฐ์ด์ ๋ฌธ์ ์ธ๋ฐ, ์๊ฐ๋ณด๋ค ์กฐ๊ฑด์ด ๊น๋ค๋ก์์ ๊ตฌํํ๋๋ฐ์ ์ ๋ฅผ ๋จน์๋ค.
- ์๊ฐ๋ณด๋ค ๋ถ๋ฅดํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ด ํ๊ธฐ ๊น๋ค๋กญ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋ ๋ฌธ์ ์๋ค
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2615 ์ค๋ชฉ with Python (0) 2021.12.12 [๋ฐฑ์ค] 1515 ์ ์ด์ด ์ฐ๊ธฐ with Python (0) 2021.12.12 [Programmers] ๋ธ๋ก ์ด๋ํ๊ธฐ with Python (0) 2021.12.12 [Programmers] ์ธ๋ฒฝ ์ ๊ฒ with Python (0) 2021.12.06 [๋ฐฑ์ค] 11497 ํต๋๋ฌด ๊ฑด๋๋ฐ๊ธฐ with Python (0) 2021.12.06