전체 글 (91) 썸네일형 리스트형 백준 - 1439번 - 뒤집기 [파이썬] 1. 문제의 출처 백준 1439번 뒤집기 문제로 이동하기 2. 문제의 설명 (1) 문제의 설명 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가.. 프로그래머스 - 탐욕법(Greedy) - 체육복 [파이썬] 1. 문제의 출처 2. 문제의 설명 3. 코드 해설집 1. 문제의 출처 programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 2. 문제의 설명 (1) 기본 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, .. 프로그래머스 - 스택/큐 - 프린터[파이썬] 1. 문제의 출처 및 설명 2. 문제 풀이 1. 문제의 출처 및 설명 programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr (1) 문제의 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목.. BFS 완벽 구현하기 - 파이썬 1. BFS 기본 개념 2. BFS 구현 원리 3. BFS 구현 코드 1. BFS 기본 개념 BFS란 그래프 자료 구조에서 원하는 자료를 찾는 탐색 알고리즘 중에 하나입니다. 자료를 찾을 때 "수직" 방향으로 자료를 검색할 수도 있고, "수평" 방향으로 자료를 검색할 수 있는데, BFS는 이름에서 추론할 수 있듯이, "수평방향"으로 원하는 노드를 탐색하는 알고리즘입니다. (DFS는 이 포스팅을 참고해주시기 바랍니다. ) 2. BFS 구현 원리 BFS를 구현하기 위해서는 항상 "방문하고자 하는 노드"와 "방문했던 노드"를 나누어서 알고리즘을 구성하는 것이 핵심 원리입니다. 논리를 3단계로 요약하면 다음과 같습니다. 1단계. 시작 노드를 방문했던 노드에 삽입한다. 2단계. 방문할 노드에 시작노드의 Child.. DFS 완벽 구현하기 [Python] 1. DFS의 기본 개념 2. 스택/큐를 활용한 DFS 구현하기 3. 재귀함수를 이용한 DFS 구현하기 1. DFS의 기본 개념 (1) 기본개념 DFS란 Depth first search의 약자로서 그래프 자료에서 데이터를 탐색하는 알고리즘입니다. 한 번 예시를 들어 보겠습니다. 오른쪽에 보이다 싶이 A부터 J까지 노드가 연결되어 있는 그래프 자료를 볼 수 있습니다. 그래프에서 특정 노드를 찾으려고 할 때, 위에서 부터 찾느냐 혹은 옆에서부터 찾느냐 그 차이가 있겠죠. 위에서 아래로 찾는 방식을 바로 DFS(Depth First Search)라고 부르는 것입니다. BFS(Breadth First Search)는 차후 포스팅에서 다루도록 하겠습니다. 참고로 위에서 아래로 탐색할 때 왼쪽으로 가냐 오른쪽으로.. 그래프의 이해 - 고도 알고리즘을 위한 기초 개념 1. 그래프(Graph)란? 2. 그래프(Graph)의 관련 개념 및 용어 정리 3. 그래프(Graph)의 종류 4. 그래프(Graph)와 트리(Tree)의 구조적 차이점 1. 그래프(Graph)란? (1) 정의 : 실제 사물이나 현상을 정점(Vertex), 노드(Node), 그리고 간선(Edge)으로 표현하기 위해 사용되는 컴퓨터 프로그래밍 개념입니다. 1) 예시 - 집에서 회사로 갈 수 있는 가능한 모든 경로를 그래프로 표현한 것 (출처: www.fun-coding.org) 2. 그래프(Graph)의 관련 개념 및 용어 정리 (1) 노드(Node) : 위치를 말합니다. 원으로 표현되며, 정점(Vertex)라고 표현하기도 합니다. (2) 간선(Edge) : 위치 간 관계를 표시한 선으로, 노드 간 연결.. 프로그래머스 - 해쉬 - 전화번호 목록 1. 문제의 출처 프로그래머스 - 해쉬 - 전화번호 목록 programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 2. 코드 해답 (1) Best 해답 1 2 3 4 5 6 7 8 9 10 11 def solution(phone_book): answer = True phone_book.sort() for prefix, number in zip(phone_book, phone_book[1:]): if number.startswit.. 프로그래머스 - 해쉬 - 완주하지 못 한 선수 1. 문제의 출처 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 2. 문제의 설명 우선 두개의 리스트가 주어집니다. 첫 번째는 참여자 리스트가 있고, 두 번째는 완주자 리스트가 있습니다. 두 리스트 간 길이가 무조건 1이 차이가 난다고 할 때, 누가 과연 완주를 못 했는지 파악하는 문제입니다. 문제의 함정은 동명이인이 있고, 이중 한 명이 완주하지 못 했을 경우 어떻게 이들을 걸러낼 것인가 입니다. 3.. 이전 1 ··· 5 6 7 8 9 10 11 12 다음