Algorithm/Programmers 14

[프로그래머스] 단어변환

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 그림으로 재현하자면 약간 이런느낌입니다. 최단거리니까 역시 BFS로 구현하는데, 1. 만약 target 단어가 words 안에 없으면 그건 안되는 거라 0 반환 2. word안에서 연결리스트로 그래프 딕셔너리 생성하기 3. 생성 기반으로 bfs돌려서 최단거리 확인하기 BFS 문제를 하도 풀다보니까 이젠 간편하다,, ## code ## import collections def ..

[프로그래머스] h-index

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42747# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 ## 내 code ## 1) 내림차순 정렬한다 2) 시작은 제일 큰 citation 3) hindex가 0까지 돌리면서 hindex가 ciations[i] 보다 커지는 순간을 찾는다 ==> 이때 만약 hindex보다 그 citations[i]까지의 길이가 더 길거나 같으면 최대 hindex임 4) 근데 hindex 가 citations 안에 있는 수들보다 작을 수도 있으니 ..

[프로그래머스] 여행경로

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 드디어 Lv 3 문제도 좀 적응한거같다 ㅠㅠ 이 문제는 dfs로 이용해서 풀었다,, 이유는 진입경로를 끝까지 파서 마지막까지 닿으면 되기 때문이다. 대신 그럴려면 sort로 알파벳 순서대로 정렬해줘야한당 1) 주어진 경로를 유방향 그래프 (directed graph) 의 인접리스트로 구현한다. ** 내가 추가해서 썼던 테케,, [["ICN", "B"], ["ICN", "C"..

[프로그래머스] 네트워크

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43162# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 후 하 후 하 드디어 탐색 감을 좀 잡은거 같다. 문제는 네트워크 개수를 찾는 문제인데, 최단거리도 아니고 깊이 있게 훑는게 효율적일거 같아서 DFS로 짰다. 사실 시행착오 한 번 겪긴 했는데,, 그 주어진 데이터 상태 그대로 풀려다가. 뭔가 서로 연결된 관계 matrix를 주니까 그렇게 풀어야할거 같앗는데 생각해보니까 차라리 그 관계 matrix로 연결 리스트를 만드는게 ..

[프로그래머스] 게임 맵 최단거리

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 이런식으로 이동해서 도착하는건데, 생각해보니 최근 풀었던 코테랑 문제가 많이 비슷했네??,,, 오호 최단거리를 구해야했기 때문에 bfs로 풀어줬습니다. 1. (x, y, 현재까지 이동길이) 를 받는 bfs 함수를 만든다. 2. 상하좌우 이동가능해서 dx, dy는 그렇게 좌표 설정을 해준다. 3. queue에 계속 쌓아주면서 돌다가, 마지막 좌표에 도착하면 반환해준다. 4. 아참..

[프로그래머스] 의상

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42578# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 와우 진짜 이문제 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 골때리고,, 많이 배운 문제 나왜래 바보임? 싶은 2-1) 조합 풀이 일단 나는 조합으로 접근했어서 첨에 진짜 초단순하게 그 분야 의상만 입기 + (안에는 조합으로 이제 2, 3, 4, ... 조합돌리기) + 전체 한번에 입기 이렇게 분리해서 생각했는데 진짜 바보였다. ## 내 code ## import collections imp..

[프로그래머스] 완주하지 못한 선수

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 2-1) parti 라는 dict을 하나 구상한다. 2-2) 각 사람이름 마다 1씩 할당해주면서 dict 구성하고, 2-3) 이제 완주 목록 돌리면서 dict 하는데 오류뜨면 한사람만 완주못했기 때문에 그사람, 만약 전체 잘돌아가면 dict value 중에 1이라도 남은 동명이인이 완주못한 경우임 2-4) 그래서 k, v 바꿔서 1인거 찾아내기!! ## code ## impo..

[Programmers] 코딩테스트 연습 > Hash > 전화번호 목록

[문제 설명] 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. [제한 사항] phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. [풀이] ..

[Programmers] 연습문제 > 공원산책

문제 설명 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다. 주어진 방향으로 이동할 때 공원을 벗어나는지 확인합니다. 주어진 방향으로 이동 중 장애물을 만나는지 확인합니다. 위 두 가지중 어느 하나라도 해당된다면, 로봇 강아지는 해당 명령을 무시하고 다음 명령을 수행합니다. 공원의 가로 길이가 W, 세로 길이가 H라고 할 때, 공원의 좌측 상단의 좌..

[Programmers] 연습문제 > 옹알이(1)

문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다. 문자열은 알파벳 소문자로..