๋ฌธ์
https://softeer.ai/practice/7703
์ค๋ต ํ์ด
์ฒ์์ ๋ฌธ์์ด์ ๋์ ํ์ฌ ์ถ๊ฐํด์ฃผ์๋๋ ํ ์คํธ์ผ์ด์ค 5๋ฒ๊ณผ 8๋ฒ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ์ต๋๋ค.
# ์ค๋ต์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
answer = '' # ๋ฌธ์์ด ๋์
for i in range(n):
s, t = input().split()
s = s.upper()
t = t.upper()
answer += t[s.find('X')] # ๋ฌธ์์ด์ ๋งค๋ฒ ์๋ก ์์ฑ
print(answer)
์ ์ค๋ต ์ฝ๋๋ ๋ฌธ์์ด 'answer'์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ถ๊ฐํ ๋๋ง๋ค ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค.
ํ์ด์ฌ์ ๋ฌธ์์ด์ ๋ถ๋ณ(immutable)์ด๊ธฐ ๋๋ฌธ์, ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ค ๋๋ง๋ค ๊ธฐ์กด ๋ฌธ์์ด์ ๋ด์ฉ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ฉด, ํนํ ๋ฐ๋ณต ํ์๊ฐ ๋ง์ ๋ ๋งค์ฐ ๋นํจ์จ์ ์ ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ ๊ฒ์ ๋๋ค.
์๊ฐ ๋ณต์ก๋
- ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต: O(1) (answer๊ฐ ์งง์)
- ๋ ๋ฒ์งธ ๋ฐ๋ณต: O(2)
- ์ธ ๋ฒ์งธ ๋ฐ๋ณต: O(3)
- ...
- n๋ฒ์งธ ๋ฐ๋ณต: O(n)
์ ๋ต ํ์ด
import sys
input = sys.stdin.readline
n = int(input())
answer = [] # ๋ฆฌ์คํธ์ ๋ฌธ์์ด ๋์
for i in range(n):
s, t = input().split()
s = s.upper()
t = t.upper()
answer.append(t[s.find('X')]) # ๋ฆฌ์คํธ์ ๋ฌธ์๋ฅผ ์ถ๊ฐ
print(''.join(answer)) # ์ต์ข
์ ์ผ๋ก ํ ๋ฒ์ ๋ฌธ์์ด ์์ฑ
์ ์ ๋ต ์ฝ๋๋ ๋ฆฌ์คํธ 'answer'์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ถ๊ฐํฉ๋๋ค.
๋ฆฌ์คํธ๋ ๊ฐ๋ณ(mutable) ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์, ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ ๋ ๊ธฐ์กด ๋ฆฌ์คํธ์ ๋ด์ฉ์ ๋ณต์ฌํ์ง ์์ต๋๋ค.
๋ฆฌ์คํธ์ ๋ฌธ์๋ฅผ ๋ชจ๋ ์ถ๊ฐํ ํ, join ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ข ๋ฌธ์์ด์ ํ ๋ฒ์ ์์ฑํฉ๋๋ค.
์๊ฐ ๋ณต์ก๋
for ๋ฃจํ์ ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ, ๋ง์ง๋ง์ ''.join(answer)๋ ๋ฆฌ์คํธ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์น๋ ์ฐ์ฐ์ผ๋ก O(n) ์๊ฐ์ด ์์๋ฉ๋๋ค.
- (๋ฐ๋ณต) + O(n) (join ์ฐ์ฐ)
์ ๋ฆฌํ๋ฉด
- ์ค๋ต ์ฝ๋์์ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ด ๋ฐ๋ณต์ ์ผ๋ก ์ผ์ด๋๋ฉด์ ๊ฐ ๋ฐ๋ณต๋ง๋ค answer๊ฐ ์ ์ ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๊ฐ O(N^2)์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
- ์ ๋ต ์ฝ๋์์๋ ๋ฆฌ์คํธ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๋ ์ฐ์ฐ์ด ํ๊ท O(1) ์๊ฐ์ผ๋ก ํจ์จ์ ์ด๋ฉฐ, ๋ง์ง๋ง์ ํ ๋ฒ์ join ์ฐ์ฐ์ผ๋ก ์ ์ฒด ๋ฌธ์์ด์ ์์ฑํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ O(n)์ ๋๋ค.
- ๋ฐ๋ผ์ ์ ๋ต ์ฝ๋๊ฐ ํจ์ฌ ํจ์จ์ ์ด๊ณ , ๋๊ท๋ชจ ์ ๋ ฅ์์๋ ์๊ฐ ์ด๊ณผ ์์ด ๋์ํ ์ ์์ต๋๋ค.