본문 바로가기

Algorithm/Implementation

(750)
(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..
(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++) - 백준(BOJ) 2896번 : 무알콜 칵테일 답 https://www.acmicpc.net/problem/2896 2896번: 무알콜 칵테일 문제 상근이와 지수는 마트에서 오렌지 주스, 사과 주스, 파인애플 주스를 구매했다. 그들은 인터넷에서 찾은 방법으로 무알콜 칵테일을 만들어 학교에서 팔려고 한다. 하지만, 칵테일을 만드는 www.acmicpc.net 소수점에 대한 처리를 물어보는 문제였습니다. c++에는 precision함수, c에는 printf("%.6f", a); 식으로 사용하여 자동으로 반올림하여 원하는 자리만큼 출력할 수 있습니다. 풀이방법 : 1. -0이 될 경우를 고려해 precision함수를 사용하였습니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using n..
(C++) - 백준(BOJ) 11866번 : 요세푸스 문제 0 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 자료구조 queue를 이용해 구현하여 AC를 받았습니다. 풀이방법 : 1. 사람을 모두 제거할 때까지 loop를 돕니다. 2-1. 일정 순번(k)째가 되면 그때 queue를 pop한 후 출력합니다. 2-2. 일정 순번째가 아니면 queue의 가장 앞 원소를 가장 뒤쪽으로 옮겨줍니다. 3. 과 ,를 잘 출력해주도록 조절해줍니다. 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 #inc..
(C++) - 백준(BOJ) 1259번 : 팰린드롬수 https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 �� www.acmicpc.net 간단한 구현문제였습니다. 풀이방법: 문자열의 중앙을 기준으로 양옆을 확인해줌으로써 팰린드롬인지 확인할 수 있습니다. 양옆의 문자가 다르다면 팰린드롬이 아니므로 "no"를 출력합니다. 양옆의 문자가 모두 같다면 팰린드롬이므로 "yes"를 출력합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include #include using namesp..
(C++) - 백준(BOJ) 8979번 : 올림픽 https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 국가를 나타내는 정수와 이 국가가 얻은 금, 은, 동메달의 수가 빈칸을 사이에 두고 주어진다. 전체 메달 수의 총합은 1,000,000 이하이다. www.acmicpc.net 간단한 구현문제였습니다. 풀이방법 : 1. 금메달,은메달,동메달 마다 점수차이를 두어 총합점수를 나라별로 저장한다. 이때 각 메달의 점수 차이가 월등히 벌어지도록 한다. 또한 금메달 1개가 은메달 3개와 점수가 같은 상황히 발생하지..
(C++) - 백준(BOJ) 2108번 : 통계학 www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 구현 문제였습니다. -가 포함되어 있어 꼼꼼한 처리가 필요합니다. 풀이방법 구해야 할 값이 총 4가지입니다. 각각은 함수로 구현했습니다. 1. 산술평균 : (모든 값의 합 / n) 을 소수 첫째자리에서 반올림한 후 반환합니다. 2. 중앙값 : 저의 경우 값을 입력받는 배열의 인덱스가 1부터 시작하므로 배열의 n/2+1번째 값을 반환해줍니다. 3. 가장 빈도 수가 많은 값 또는 두 번째로 작은 값(빈도수가 같을 경우) : 3-1.형의 map변수를 ..