본문 바로가기

Algorithm/Implementation

(746)
(C++) - 백준(BOJ) 1302번 : 베스트셀러 답 www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 간단한 map을 이용한 구현이었습니다. 풀이방법 1. 책 이름을 key, 책 이름이 나온 빈도 수를 value로 한 map 변수를 만들어 정보를 저장합니다. 2. map 자료구조는 자료를 저장할 떄 key값을 기준으로 오름차순으로 정렬되므로 가장 빈도 수가 높은 값을 찾으면 바로 key값을 출력 후 프로그램을 종료하면 됩니다. Code #include using namespace std; map m; i..
(C++) - 백준(BOJ) 1269번 : 대칭 차집합 답 www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 풀이방법 1. a에 대한 원소를 key, 나온 빈도를 value로 한 map 자료구조를 만듭니다. 2. b의 원소를 map에서 key로 하여 검색했을 때 값이 있다면 a와 공집합에 대한 원소이므로 세줍니다. 3. 답출력 : a원소 개수 + b원소 개수 - (공집합 원소의 개수 * 2)를 출력해줍니다. Code #include using namespace std; map m; int aSize,bSize, ..
(C++) - 백준(BOJ) 1021번 : 회전하는 큐 답 www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net deque을 구현하는 문제였습니다. 풀이방법 1. 뽑을 값을 찾을때까지 왼쪽으로 옮겨봅니다. 2. 왼쪽으로 옮기는 연산의 개수를 저장합니다. 3. 해당 개수만큼 원상복귀(우측이동)시켜줍니다. 4. 다시 뽑을 값을 찾을때까지 오른쪽으로 옮겨봅니다. 5. 오른쪽으로 옮기는 연산의 개수를 저장합니다. 6. 해당 개수만큼 원상복귀(좌측이동)시켜줍니다. 7. 더 적은 연산 개수에 해당하는 방향으로 옮겨주고 값을 po..
(C++) - 백준(BOJ) 14891번 : 톱니바퀴 답 www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net simulation 문제였습니다. 풀이방법 1. 매 k 마다 다음을 수행합니다. 1-1. 4개의 톱니바퀴에 대한 회전 방향 계산 후 배열 저장 1-2. 회전 방향 정보대로 톱니바퀴 회전 1-3. 회전 방향 저장 된 배열 초기화 2. 점수 계산 후 출력 Code #include using namespace std; int direction[4]; vector gear; vector getGearVector(s..
(C++) - 백준(BOJ) 13300번 : 방 배정 답 www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 > n >> k; for(int i = ..
(C++) - 백준(BOJ) 1051번 : 숫자 정사각형 답 www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 간단한 구현문제였습니다. 풀이방법 모든 길이에 대해 정사각형을 만들어본 후 꼭지점들의 값이 같으면 가장 긴 길이로 갱신해줍니다. Code #include using namespace std; int n, m; char square[51][51]; int main(){ cin >> n >> m; int length = max(n,m); int ans = 1; for(int i = 1; i square[i][j..
(C++) - 백준(BOJ) 2851번 : 슈퍼마리오 답 www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 버섯 먹는 것을 중단해야할 때를 잘 처리해줘야되는 문제입니다. 풀이방법 1. 100과의 차이 계산 : 현재버섯을 먹었을 때 100과의 차이, 현재 ans에 저장된 변수의 값과 100의 차이를 구해줍니다. 2. ans값 갱신여부 판단 2-1. 만약 ans의 gap(차이)가 더 크다면 현재 버섯을 먹는것이 이득이므로 ans값을 sum으로 갱신해줍니다. 2-2. 만약 100과의 차이가 서로 같다면 더 큰 값을 ans변수로 갱신해줍니다. 3. 답 출력 Code #include u..
(C++) - 프로그래머스(2018 KAKAO BLIND) : [1차] 셔틀버스 답 programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 구현을 통해 적절히 시간계산 하는 문제였습니다. 풀이방법 1. 문자열 정리 : "09:01"식으로 되어있는 timetable배열을 시간계산의 편리성을 위해 새로운 vector timeInt 변수에 계산을 통해 분으로 바꾸고 저장합니다. 그 후 오름차순으로 정렬합니다. 2. 한 번의 버스 운행에 탑승하는 인원 계산 : 0번째 운..