본문 바로가기

Algorithm/Sorting

(38)
(C++) - 백준(BOJ) 20976 : 2 番目に大きい整数 (The Second Largest Integer) https://www.acmicpc.net/problem/20976 20976번: 2 番目に大きい整数 (The Second Largest Integer) 3 つの整数 A, B, C が与えられる.これらのうち 2 番目に大きい数を出力せよ. www.acmicpc.net 정렬 후 두 번째로 큰 수를 출력하는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 세 개의 정수를 입력받을 일차원 변수 a를 선언 후 입력해줍니다. 📔 풀이과정 sort함수를 사용해 a의 원소를 오름차순으로 정렬합니다. 📔 정답출력 a[1]를 출력합니다. 📕 Code #include using namespace std; int a[3]; int main(){ for(int i = 0; i > a[i]; sort(a, ..
(C++) - 백준(BOJ) 18411 : 試験 (Exam) https://www.acmicpc.net/problem/18411 18411번: 試験 (Exam) JOI 君は情報の試験を 3 回受けた.試験の点数はすべて 0 以上 100 以下の整数である. JOI 君の成績は 3 回の試験の点数のうち高い方から 2 つを足し合わせた合計によって決まる. 3 回 www.acmicpc.net 정렬 STL 함수를 사용해보는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 세 시험의 점수를 입력받을 일차원 배열 a를 선언 후, 세 시험의 점수를 입력합니다. 📔 풀이과정 1. 배열 a를 sort함수를 이용해 오름차순으로 정렬합니다. 2. 두 높은 점수 a[1], a[2]에 존재합니다. 📔 정답출력 a[1] + a[2]를 출력합니다. 📕 Code #include using namespace st..
(C++) - 프로그래머스(위클리 챌린지) : 8주차_최소직사각형 https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 8주차_최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 정렬을 사용한 구현 문제였습니다. 📕 풀이방법 📔 풀이과정 명함을 90도 회전할 수 있기 때문에 아예 명함을 고정해버리는 방법을 생각하는 것이 간단합니다. sizes의 원소마다 sort를 한뒤 첫 번째 원소의 최댓값은 width에, 두 번째 원소의 최댓값은 height에 저장합니다. 📔 정답출력 width * height의 결과값을 출력합니다. 📕 Code ..
(C++) - 프로그래머스(위클리 챌린지) : 6주차 https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차_복서 정렬하기 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 정렬 및 구현문제였습니다. 📕 풀이방법 📔 입력 및 초기화 승률, 자기자신보다 무거운 복서를 이긴 횟수, 선수 번호를 저장할 vector 변수들을 선언합니다. 그리고 몸무게 정보도 전역변수로 이용하기 위해 따로 저장합니다. player를 weights.size()만큼 1씩 증가해 선수들의 번호를 저장해줍니다. 📔 풀..
(C++) - 백준(BOJ) 20207번 : 달력 https://www.acmicpc.net/problem/20207 20207번: 달력 수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장 www.acmicpc.net 정렬 후 구현하는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 pair형 vector변수 plan을 선언합니다. 그 후 n만큼 차례대로 입력받습니다. 이 후 조건대로 시작날이 가장 앞서고 만약 같다면 일정이 제일 긴 pair들 순으로 정렬해줍니다. 📔 풀이과정 직사각형을 만드는 조건은 연속된 일정이 width 즉, 너비가 되고 겹치는 날의 개수가 height 즉, 높이가 되며 다음 일정이 비어있다면 widt..
(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) 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) 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...