goblin
리니팅
goblin

공지사항

전체 방문자
오늘
어제
  • 분류 전체보기 (75)
    • 개발 (31)
      • Spring (12)
      • JPA (4)
      • JAVA (4)
      • Python (6)
      • Docker (1)
      • Error (3)
      • Spring Cloud로 개발하는 MSA (1)
    • 알고리즘 (32)
    • 자료구조 (3)
    • 컴퓨터 개론 (3)
    • 개인 프로젝트 (4)
      • 쇼핑몰 만들기 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • Spring
  • 객체
  • tdd
  • 프로그래머스
  • inflearn
  • sorting
  • 문자열
  • 스프링
  • 다이나믹프로그래밍
  • dp
  • 다이나믹 프로그래밍
  • 코딩테스트연습
  • BOJ
  • python
  • Intellij
  • 정렬
  • 클래스
  • 백준
  • 파이썬
  • 알고리즘
  • 구현
  • 코딩테스트
  • JPA
  • 스프링부트
  • 조합
  • 동적계획법
  • gradle
  • springboot
  • 파워자바
  • 자료구조

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
goblin

리니팅

알고리즘

[프로그래머스] 단어 변환 - 파이썬(Python3)

2022. 11. 8. 00:14
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/43163

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

두 단어 begin, target 그리고 단어의 집합 words가 있다.

규칙을 지켜 begin -> target 의 가장 짧은 변환 과정을 찾는 문제이다.

규칙 1. 한 번에 한개의 알파벳만 바꿀 수 있다.

규칙 2. words에 있는 단어로만 변환할 수 있다.

 

제일 먼저 words에 target이 존재하는 지를 확인(규칙2)을 해야한다고 생각했다.

그 후에 한 개의 알파벳만 다른 단어로 변환(규칙1)될 때 +1씩 count 하며 진행했다.

변환한 단어와 target이 일치하면 count를 return 해 주면 된다.

 

from collections import deque

def solution(begin, target, words):
    
    if target not in words:
        return 0
    
    queue = deque()
    queue.append((begin,0))
    
    while queue:
        temp, cnt = queue.popleft()
        
        if temp == target:
            return cnt
        
        for i in range(len(words)):
            dif = 0
            word = words[i]
            for j in range(len(temp)):
                if temp[j]!=word[j]:
                    dif+=1
            if dif==1:
                queue.append((word,cnt+1))
    return 0

 

+ 문제 풀이를 안하다가 최근에 다시 시작했는데 그래서인지 편하다고 느껴지는 bfs로 풀게 된다..(bfs로 문제를 푸는 것도 능숙하진 않지만ㅎㅎ😥) 

dfs로 푸는 방법도 빠른 시일 내로 추가하고 싶다~!

728x90
반응형

'알고리즘' 카테고리의 다른 글

[프로그래머스] 캐시 - 파이썬(Python3)  (3) 2023.07.25
[프로그래머스] n^2 배열 자르기 - 파이썬(Python3)  (0) 2023.07.25
[프로그래머스] 숫자 짝꿍 - 파이썬(Python3)  (0) 2022.10.14
이코테 Chapter03. 그리디  (0) 2022.09.01
[BOJ/Python3(파이썬)] 백준 16967번 : 배열 복원하기  (0) 2022.05.16
    '알고리즘' 카테고리의 다른 글
    • [프로그래머스] 캐시 - 파이썬(Python3)
    • [프로그래머스] n^2 배열 자르기 - 파이썬(Python3)
    • [프로그래머스] 숫자 짝꿍 - 파이썬(Python3)
    • 이코테 Chapter03. 그리디
    goblin
    goblin

    티스토리툴바