본문 바로가기

Algorithm

(2139)
(Python) - 백준(BOJ) 16829번 : Hashing 답 https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정� www.acmicpc.net 큰 수를 다루는 법을 구현하는 문제였습니다. 풀이방법 : 1. ord함수 : 문자의 아스키 코드값을 반환하는 함수입니다. 이를 통해 원하는 알파벳의 숫자수열을 구할 수 있었습니다. 2. 얻은 숫자수열을 문자열의 길이만큼 loop를 돌려 정해진 해싱함수를 돌려 결과값을 출력합니다. Code : def convertStrToInt(strWord): tmp = [] for i in range(str..
(C++) - 백준(BOJ) 1966번 : 프린터 큐 답 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료�� www.acmicpc.net 우선순위 큐, 큐를 사용하는 완전탐색 문제였습니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include #include using namespace std; int main(void){ int t; cin >> t; w..
(Python) - 프로그래머스(Programmers) : 전화번호 목록 답 https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 간단한 hash를 이용한 구현 문제였습니다. 풀이방법 : 사전순으로 phone_book을 정렬하게 되면 인접한 두 phone_book의 문자열에 접두어만 비교하면 됩니다. Code : 1 2 3 4 5 def solution(phone_book): phone_book.sort() #사전순 정렬 for i in range(le..
(C++) - 프로그래머스(Programmers) : 완주하지 못한 선수 답 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 간단하게 hash 자료구조를 사용하는 문제였습니다. 풀이방법 : 1. 동명이인이 있을 수 있으므로 동명이인에 대해 count++를 진행합니다. 2. 완주자명단을 읽으며 count-- 3. 참여자 명단들 중 완주자명담을 제한 count가 0보다 큰 인원은 완주를 못한 것이 됩니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12..
(C++) - 프로그래머스(Programmers) : 징검다리 답 https://programmers.co.kr/learn/courses/30/lessons/43236?language=cpp 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr 이분탐색 문제였습니다. 풀이방법 바위 사이의 거리를 mid로 생각해 해당 조건을 찾았을 때의 거리들의 max값을 찾는 이분탐색을 시행하였습니다. 1. mid보다 바위 사이의 거리가 작다면 제거해준다. removeCount값을 증가시킵니다. 2. 모든 바위를 제거했을때의 removeCount값이 n보다 크면 너무 많이 지웠으므로..
(C++) - 백준(BOJ) 11866번 : 다리만들기 https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 풀이방법 : 섬마다 땅에 번호를 매긴 후 BFS를 이용해 원래섬에서 다른 섬까지의 거리의 최솟값을 구하면 답이됩니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ..
(C++) - 백준(BOJ) 6603번 : 로또 (DFS) 답 https://www.acmicpc.net/problem/6603 [ 6603번: 로또 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 www.acmicpc.net ](https://www.acmicpc.net/problem/6603) 간단한 Back tracking 문제였습니다. 풀이방법 : 정적 배열이용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 //DFS 문제입니다. 거꾸로 노드를 거슬러 올라가..
(C++) - 백준(BOJ) 1011번 : Fly me to the Alpha Centauri 답 https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행�� www.acmicpc.net 풀이방법 : distance = y - x 마지막은 무조건 1광년을 선택해야 한다. 거리,선택한 광년의 흐름,선택횟수 순으로 정리해봤습니다. 01 : 1 선택횟수 : 1 02 : 1 -> 1 선택횟수 : 2 03 : 1 -> 1 -> 1 선택횟수 : 3 04 : 1 -> 2 -> 1 선택횟수 : 3 수의 증감이 ^형태로 되어 있어 대칭을 이룰 때 2..