본문 바로가기

정렬

(21)
(C++) - 백준(BOJ) 16499번 : 동일한 단어 그룹화하기 https://www.acmicpc.net/problem/16499 16499번: 동일한 단어 그룹화하기 첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. www.acmicpc.net 자료구조를 이용한 정렬문제였습니다. 풀이방법 1. 단어의 서순은 중요하지 않으므로 매 단어마다 사전순으로 정렬하여 그 결과를 key로 결정합니다. 이를 map에다 저장해줍니다. 2. 답 출력 : map의 size를 출력해줍니다. Code #include using namespace std; int n; map m; int main(){ cin >> n; for(int i = 0; i..
(C++) - 백준(BOJ) 7785번 : 회사에 있는 사람 https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 정렬과 적절한 자료구조를 이용하는 문제였습니다. 풀이방법 1. n만큼 이름, 상태를 입력받습니다. 2. 상태가 "leave"라면 map에 key가 name, value는 0으로 저장합니다. "enter"라면 map에 같은 key를 가지며 value는 1로 저장합니다. 3. vector에 map의 value가 1인 것들의 이름을 저장한뒤 역순으로 정렬합니다. ..
(C++) - 프로그래머스(2018 KAKAO BLIND RECRUITMENT[3차]) : 파일명 정렬 https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 문자열 파싱 후 정렬하는 문제였습니다. 풀이방법 stl sort함수는 unstable quick sort입니다. 따라서 정해진 기준 외에 놔둬야 하는 문자열들의 서순이 뒤바뀔 수 있습니다. 때문에 stable_sort함수를 사용해 기준이 없는 문자열의 서순을 바꾸지 않도록 한다면 맞을 수 있습니다. 1. Head, Number를 문자열 파싱으로 구합니..
(C++) - 백준(BOJ) 21609번 : 상어 중학교 www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net bfs와 정렬을 구현하는 문제였습닌다. 풀이방법 1. 블록 그룹 넓이, 무지개 블록 개수, 기준 블록의 행,열을 struct로 하는 자료구조인 groups vector변수를 선언해줍니다. 그 외 기본적인 입력을 받을 board 등을 선언해줍니다. 2. 조건에 만족하는 블록 그룹의 기준 블록을 찾아줍니다. 무지개 블록은 공유될 수 있기 때문에 check이후 check해제해야합니다. 기준 블록을 찾았으면 gro..
(C++) - 백준(BOJ) 11497번 : 통나무 건너뛰기 www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이 www.acmicpc.net 정렬문제였습니다. 풀이방법 인접한 높이 차이가 최소가 되려면 가장 높이가 높은 통나무 양 옆으로 작은 통나무가 배치되어야 합니다. 또한 이를 직접 배치하지 않고서 알 수 있는 방법은 정렬 후 한 칸 더 건너뛰어 2칸 떨어진 통나무끼리의 높이 차이들 중 최대를 구하면 이는 곳 난이도가 됩니다. Code #include using namespace std; int t; int main(){ cin >> t; wh..
(C++) - 백준(BOJ) 3273번 : 두 수의 합 답 www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net map을 이용해 푼 문제였습니다. 풀이방법 1. map에 key는 a의 원소, value는 존재여부(0은 없음,1은 있음)으로 해 저장합니다. 2. (x - map.first, map.first) 가 모두 1이라면 한 쌍이 만들어지므로 답 변수 ans++해줍니다. 3. 중복해서 더해졌으므로 ans/2를 출력합니다. Code #include #define l..
(C++) - 백준(BOJ) 1431번 : 시리얼 번호 답 www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루 www.acmicpc.net 정렬 문제였습니다. 풀이방법 stl의 sort함수는 정렬기준을 커스터마이징한 함수를 넣어 원하는 대로 정렬할 수 있습니다. Code #include using namespace std; int n; vector serial; bool cmp(string a, string b){ if(a.size() == b.size()){ int sumA = 0,sumB = 0; for(int i = 0; i < a...
(C++) - 백준(BOJ) 10825번 : 국영수 답 www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 정렬 문제였습니다. 풀이방법 stl에서 sort함수를 사용할 때 정렬 기준을 커스터마이징할 수 있습니다. Code #include using namespace std; int n; struct Student { string name; int korean, english, math; }; vector v; bool cmp(Student &a, Student &b){ if(a.korean ==..