본문 바로가기

프로그래밍

(187)
[프로그래머스] 오픈채팅방 - 파이썬 오픈채팅방 문제 설명 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다..
[백준] 1766 문제집 - 파이썬 풀이. 진입 차수가 0인 정점을 힙에 삽입하고 힙에서 해당 원소를 꺼내고 해당 원소와 연결된 간선을 제거해준다 이후 진입 차수가 0이된 정점을 힙에 삽입을하고 힙이 모두 빌 때까지 반복을 한다. 소스코드.
[백준] 3665. 최종 순위 - 파이썬 풀이. 처음에 주어진 순위들의 간선을 모두 처리하고 바뀐 순위의 간선 정보들을 처리하여 풀면된다. 즉 그래프를 통해 사이클이 존재하는지 존재하지 않는지 확인을 하고, 최종 순위를 담는 배열의 길이가 n이 아니라면 불가능의 경우로 하였다. 소스코드.
[백준] 2357 최솟값과 최댓값 - 파이썬 풀이. 기존에 봤던 구간 합, 구간 곱이 아닌 구간의 최솟값, 최댓값을 구해야하는 문제이다. 우선 세그먼트 트리에 대해 알고있다면 간단하게 풀 수 있는데 최솟값을 저장하는 트리와 최댓값을 저장하는 트리를 따로 만들어서 각각의 트리를 초기화 하고 쿼리를 실행하면 된다. 소스코드.
[백준] 11505 구간 곱 구하기 - 파이썬 풀이. 세그먼트 트리에대한 설명은 https://turret1234.tistory.com/229 [백준] 파이썬 2042 - 구간 합 구하기 풀이 . 세그먼트 트리를 이용하여야 한다. 세그먼트 트리(Segment Tree)란? 세그먼트 트리는 다음 두 연산을 어떻게 더 효율적으로 할 수 있을까라는 고민에서 출발한다. 1. 구간 l, r(l
[백준] 파이썬 2098 - 외판원 순회 풀이. 비트마스킹을 이용해서 풀어야한다. 비트마스킹의 장점은 다음과 같이 3가지가 있다. 1. 빠른 수행시간 - 2진수를 이용하기에 연산속도가 빠르다 2. 적은 메모리 - [1, 1, 0, 0, 1, 1, 1] 같은 방문을 체크하는 배열을 1100111과 같은 이진수로 표현이 가능하다 3. 짧고 깔끔한 코드 우선 문제에서 살펴봐야하는 것은 도시에서 도시끼리의 길에 가중치가 있고 경로가 없을 수 있다는 것 그리고 처음의 경로로 돌아와야한다는 것이다. 즉 출발 지점에서 출발지점으로 돌아와야하므로 순환을 이룬다는 것이다. 또한 경로가 같으면 어떤 도시에서 출발하더라고 순회 비용은 동일하므로 무조건 0에서 출발하여 가장 작은 순회 비용을 구하면 된다. 소스코드.
[백준] 파이썬 2042 - 구간 합 구하기 풀이 . 세그먼트 트리를 이용하여야 한다. 세그먼트 트리(Segment Tree)란? 세그먼트 트리는 다음 두 연산을 어떻게 더 효율적으로 할 수 있을까라는 고민에서 출발한다. 1. 구간 l, r(l
[프로그래머스] 음양 더하기 - 파이썬 음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 입출력 예 absolutessignsresult [4,7,12] [true,false,true] 9 [1,2,3] [false..