์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - Summer/Winter Coding(~2018)
<๋ฐฉ๋ฌธ ๊ธธ์ด>
๋ฌธ์ ์ค๋ช
๊ฒ์ ์บ๋ฆญํฐ๋ฅผ 4๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ํตํด ์์ง์ด๋ ค ํฉ๋๋ค. ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
U: ์์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
D: ์๋์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
R: ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
L: ์ผ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
์บ๋ฆญํฐ๋ ์ขํํ๋ฉด์ (0, 0) ์์น์์ ์์ํฉ๋๋ค.
์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ ์ผ์ชฝ ์(-5, 5), ์ผ์ชฝ ์๋(-5, -5), ์ค๋ฅธ์ชฝ ์(5, 5), ์ค๋ฅธ์ชฝ ์๋(5, -5)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ด๋, ์ฐ๋ฆฌ๋ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ง๋๊ฐ ๊ธธ ์ค ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค.
๋ช ๋ น์ด๊ฐ ๋งค๊ฐ๋ณ์ dirs๋ก ์ฃผ์ด์ง ๋, ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ
return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- dirs๋ stringํ์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, 'U', 'D', 'R', 'L' ์ด์ธ์ ๋ฌธ์๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- dirs์ ๊ธธ์ด๋ 500 ์ดํ์ ์์ฐ์์ ๋๋ค.
๋ฌธ์ ํ์ด
์ฒ์์ ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค
- ํ๋ฆฐ ์ฝ๋
def solution(dirs):
answer = 1
x, y = 0, 0
arr = []
for i in dirs:
check=False
if i == 'U':
if y < 5:
y += 1
else:
check=True
elif i == 'D':
if y > -5:
y -= 1
else:
chck=True
elif i == 'R':
if x < 5:
x += 1
else:
check=True
elif i == 'L':
if x > -5:
x -= 1
else:
check=True
if check!=True:
arr.append([x, y])
print(arr)
check=False
for i in range(1, len(arr)):
temp=arr[:i]
cnt=0
for j in range(len(temp)):
if arr[i][0]==temp[j][0] and arr[i][1]==temp[j][1]:
check=True
else:
cnt+=1
if cnt==len(temp):
answer+=1
if check==True:
answer+=1
return answer
์์๋ก ์ฃผ์ด์ง 2๋ฌธ์ ๋ ๋ง๋ ๊ฒ ๊ฐ์์ง๋ง ์ฑ์ ๊ฒฐ๊ณผ์์ ํ๋๋๐ฅ
๋ญ๊ฐ ์๋ชป๋ ์ฝ๋์ธ๊ฐ ์ดํด๋ณด๋ ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๊ฒฐ๊ตญ ๊ฒ์์ ํ์ ๋ฐ์๋ค...๐ข
set์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ๋ ๊ฒ์ด์๋ค.
์ ์ด๊ฑธ ์๊ฐํด๋ด์ง ๋ชปํ๋์ง ์ถฉ๊ฒฉ์ ์ด์๋ค.
์ต์ข ์์ฑํ ๋์ ์ฝ๋์ด๋ค.
- my solution
def solution(dirs):
answer = 0
x,y=0,0
arr = set()
for i in dirs: # U,D,R,L
start_x, start_y = x, y #์์ ์์น update
if i == 'U' and y < 5:
y += 1
elif i == 'D' and y > -5:
y -= 1
elif i == 'R' and x < 5:
x += 1
elif i == 'L' and x > -5:
x -= 1
if start_x==x and start_y==y: # ์ขํ๋ฅผ ๋ฒ์ด๋ ๊ฐ์ ์๋ฆฌ์ ๋จธ๋ฌผ๋ฉด
pass
else: #์๋ฐฉํฅ์ผ๋ก ๋ฃ์ด์ค
arr.add((start_x, start_y, x, y))
arr.add((x, y, start_x, start_y))
answer=len(arr)//2 #์๋ฐฉํฅ์ผ๋ก ์ ์ฅํ์ผ๋ฏ๋ก ๋๋๊ธฐ 2
return answer
์ด ์ฝ๋๋ก ํต๊ณผํ์ง๋ง ์ด๊ฒ๋ ์ ์ง ์ฝ๋๊ฐ ์๋๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณธ ๊ฒฐ๊ณผ U, D, R, L์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์์ list๋ dict๋ฅผ ํ์ฉํ์ฌ ๋ ์งง๊ฒ
๊ตฌํํ ์ ์์๋ค.
1) set์ ์ ์ธ: ์ค๋ณต๋ ๊ธธ์ ์ ๊ฑฐํ๊ธฐ ์ํด์์ด๋ค. (์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ๋ง)
2) U, D, R, L์ ์ฒ๋ฆฌํ๋ ๋ฐ๋ณต๋ฌธ์ ์์ฑ
โ ๋ฌธ์ ์์ ์ขํ ํ๋ฉด์ ๊ฒฝ๊ณ๊ฐ (-5, 5), (-5, -5), (5, 5), (5, -5)๋ผ๊ณ ์ฃผ์ด์ก์ผ๋ฏ๋ก ์กฐ๊ฑด์ ํจ๊ป ์์ฑ
โก ์ขํ ์ด๋์์ ๊ฒฝ๊ณ ์กฐ๊ฑด์ ๊ฑธ์์ผ๋ฏ๋ก ์์ ์์น์ ์ด๋ ์์น๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ set์ ์ถ๊ฐ x
โข set์ (์์ ์ขํ x, ์์ ์ขํ y, ์ด๋ ํ x, ์ด๋ ํ y), (์ด๋ ํ x, ์ด๋ ํ y, ์์ ์ขํ x, ์์ ์ขํ y)
๋ฅผ ์๋ฐฉํฅ์ผ๋ก ๋ฃ์ด์ค๋ค. (์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ๋ง count ํ๊ธฐ ์ํด)
3) ์๋ฐฉํฅ์ผ๋ก set์ ์ ์ฅํ์ผ๋ฏ๋ก ์ฒ์ ๊ฐ๋ณธ ๊ธธ์ ๊ธธ์ด๋ set์ 2๋ก ๋๋ ๋ชซ
์๊ฐ๐ค
set์ ํ์ฉํ์ฌ ์๋ฐฉํฅ์ผ๋ก ์ ์ฅํด์ค๋ค๋ ๊ฒ์ ๋ณด์๋ง์ '์์ฐจ' ํ๋ค.
๋ค์๋ฒ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋์์ ๋ ํ ์์์ฐจ๋ฆฌ๊ณ ํ ์ ์์ผ๋ฉด ์ข๊ฒ ๋ค.
๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์ด ๋ฌธ์ ์ ํฌ์ธํธ
1) set ํ์ฉ
2) ์๋ฐฉํฅ ์ ์ฅ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] ๋คํธ์ํฌ (0) | 2021.09.13 |
---|---|
[programmers] ๋ฒ ์คํธ์จ๋ฒ (0) | 2021.09.10 |
[programmers] [3์ฐจ] n์ง์ ๊ฒ์ - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.08 |
[programmers] ๊ดํธ ํ์ ํ๊ธฐ - ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2 (0) | 2021.09.07 |
[programmers] ๊ดํธ ๋ณํ - 2020 KAKAO BLIND RECRUITMENT (0) | 2021.09.06 |