Algorithm/Baekjoon

[python3] 이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ - μ™•μ‹€μ˜ λ‚˜μ΄νŠΈ (ch4. κ΅¬ν˜„)

감자 πŸ₯” 2021. 6. 18. 18:05
λ°˜μ‘ν˜•

λ‚΄λˆλ‚΄μ‚°! μ±… 만쑱 :) 

μ°Έκ³ ) μ΄κ²ƒμ΄ 취업을 μœ„ν•œ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€ with 파이썬 μ±…을 기반으둜 μž‘μ„±λœ λ¬Έμ œμ™€ μ½”λ“œμž…λ‹ˆλ‹€. 
λ”°λΌμ„œ λ¬Έμ œλŠ” μžμ„Έν•˜κ²Œ 적지 μ•Šκ³ , κ°„λ‹¨ν•œ μ„€λͺ…κ³Ό 제 μ½”λ“œλ§Œ μ˜¬λ¦¬κ² μŠ΅λ‹ˆλ‹€.

http://www.yes24.com/Product/Goods/91433923

 

이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with 파이썬 - YES24

λ‚˜λ™λΉˆ μ €μžμ˜ 유튜브 라이브 방솑 https://www.youtube.com/c/dongbinnaIT 취쀀생이라면 λˆ„κ΅¬λ‚˜ μž…μ‚¬ν•˜κ³  싢은 카카였 · μ‚Όμ„±μ „μž · 넀이버 · 라인!μ·¨μ—…μ˜ 성곡 μ—΄μ‡ λŠ” μ•Œκ³ λ¦¬μ¦˜ 인터뷰에 μžˆλ‹€!IT 취쀀생

www.yes24.com

 

μ‹€μ „λ¬Έμ œ(1) μ™•μ‹€μ˜ λ‚˜μ΄νŠΈ

μ΄μ½”ν…Œ μ±… μ°Έκ³ 

- μœ„μΉ˜λŠ” a1, a2, c1, c2,,... 으둜 뢈림
- 처음 μœ„μΉ˜λ₯Ό μž…λ ₯ λ°›κ³ , ν•΄λ‹Ή μœ„μΉ˜μ—μ„œ λͺ‡λ²ˆμ„ 움직일 수 μžˆλŠ”μ§€ 경우의 수 μ°ΎκΈ°
- 말판의 μœ„μΉ˜λ₯Ό λ²—μ–΄λ‚˜λ©΄ κ²½μš°μ˜μˆ˜λŠ” 세지 μ•ŠλŠ”λ‹€.
- μ™•μ‹€μ˜ λ‚˜μ΄νŠΈλŠ” L자 λͺ¨μ–‘μœΌλ‘œλ§Œ 이동 κ°€λŠ₯
μ˜ˆμ‹œ1) 수직으둜 두 μΉΈ 이동, μˆ˜ν‰μœΌλ‘œ ν•œ μΉΈ 이동
μ˜ˆμ‹œ2) μˆ˜ν‰μœΌλ‘œ ν•œ μΉΈ 이동, 수직으둜 두 μΉΈ 이동

<문제 풀이>

이전에 ν’€μ—ˆλ˜ μƒν•˜μ’Œμš° λ¬Έμ œμ™€ λΉ„μŠ·ν•˜κ²Œ 움직일 수 μžˆλŠ” 경우의 수λ₯Ό move λ¦¬μŠ€νŠΈμ— 넣어두고, ν•œ 개 μ”© μ‹€ν˜„ν•΄ λ‚˜κ°€λ©΄μ„œ λ§νŒμ„ λ²—μ–΄λ‚˜λŠ”μ§€ ν™•μΈν•˜λ©΄μ„œ count ν•΄ λ‚˜κ°„λ‹€.

<λ‚΄κ°€ ν‘Ό 풀이>

def solution(place):
    # μ‹œμž‘μ  μ •μ˜
    find = ['a','b','c','d','e','f','g','h']
    place = list(place)
    x = int(place[1])
    y = int(find.index(place[0])) + 1
    
    start = []
    start.append(x)
    start.append(y)
    
    # 이동 κ°€λŠ₯ν•œ move type μ •μ˜ (8가지)
    moves = [[1,2], [-1,2], [1,-2], [2,1], [-2,1], [2,-1], [-2,-1], [-1,-2]]
    
    #총 8번의 탐색 진행
    count = 0
    for move in moves:
        nx = start[0] + move[0]
        ny = start[1] + move[1]
        if nx < 1 or ny <1 or nx > 8 or ny > 8:
            pass # λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ μ•„λž˜ 진행 말고 λ‹€μ‹œ forλ¬Έ 진행
        else:
            count += 1 # λ²—μ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€λ©΄ ν•΄λ‹Ή ocunt κΉŒμ§€ 진행
    
    return count

λ¬Έμ œλŠ” μ•žμ„œ μƒν•˜μ’Œμš° 문제λ₯Ό ν’€μ–΄λ΄μ„œ κ·ΈλŸ°μ§€ μ‰½κ²Œ ν’€λ Έλ‹€. 근데 λ‚˜λ₯Ό κ΄΄λ‘­νžˆλŠ” λ¬Έμ œκ°€ ν•˜λ‚˜ λ°œμƒν–ˆλ‹€...
1. μœ„λ‘œ 두칸가고 였λ₯Έμͺ½μœΌλ‘œ ν•œμΉΈ
2. 였λ₯Έμͺ½μœΌλ‘œ ν•œμΉΈκ°€κ³  μœ„λ‘œ 두칸, 
이 λ‘κ°€μ§€μ˜ 경우λ₯Ό λ‚΄κ°€ 계속 λ‹€λ₯Έ 경우둜 μ„Έκ³  μ•‰μ•„μžˆμ—ˆλ‹€... κ·Έλž˜μ„œ 계속 λͺ¨λ“  κ²½μš°μ˜μˆ˜κ°€ 16가지인데.. μ™œ μ±…μ—μ„œλ„ 닡이 8κ°€μ§€μΌκΉŒ? ν•˜λ©΄μ„œ 깊게 κ³ λ―Όν–ˆλ‹€. 근데 생각해보면,, κ²°κ΅­ 말이 λ„μ°©ν•˜λŠ” μœ„μΉ˜λŠ” κ°™λ‹€...γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹ κ·Έλž˜μ„œ 8κ°€μ§€μ˜€λ˜ 것이닀... 이런 바보같은 γ…  

좜λ ₯) 책에 λ‚˜μ˜¨ μ˜ˆμ‹œμ™€ λ™μΌν•˜κ²Œ 좜λ ₯λœλ‹€~! ^0^/

 

place = 'c2'
solution(place)

 

<책에 μžˆλŠ” μ •λ‹΅κ³Ό 비ꡐ>

같은 ν˜•μ‹μœΌλ‘œ ν’€μ—ˆλ‹Ή~!~! κΈ°μ˜λ‹€ λ§žμ·ƒλ‹€ 히히
λ¬Όλ‘ , 책에 μžˆλŠ” 것이 정닡은 아닐 수 μžˆλ‹€. λ¬Όλ‘  더 쒋은 μ‹œκ°„λ³΅μž‘λ„λ₯Ό 가진 μ½”λ”© 방법이 μžˆμ„ μˆ˜λ„, λ‚΄κ°€ μ§  μ½”λ“œκ°€ 더 쒋을 μˆ˜λ„ μžˆλ‹€.  κ·Έλž˜λ„ μ „λ¬Έκ°€μ˜ μ˜κ²¬μ„ λΉŒλ €μ„œ μ²¨μ‚­ν•˜λ €κ³  λ…Έλ ₯쀑이닀~!

λ°˜μ‘ν˜•