일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CT 영상에서 U-Net 기반 변형가능 컨볼루션 GAN을이용한 잡음제거
- 논문리뷰
- 논문 리뷰
- 2D 이미지 높이 측정
- 이미지파일 특성으로 폴더분류
- C-RNN-GAN:Continuous recurrent neural networkswith adversarial training
- 백준
- music data
- PAPER
- json 파일로 image 라벨링
- Phase Map
- 데이터 전처리
- Image Inpainting
- CelebA
- Generative Adversarial Networks
- JSON
- Moire 이미지
- Phase Map 이미지
- Coherent Semantic Attention for Image Inpainting
- json 파일 정보 csv파일로 저장
- horse2zebra
- Generative Adversarial Nets
- 이미지 특징
- labeling
- mnist
- gan
- 자체 데이터 제작
- AI 대회
- 이미지 복원
- Python
- Today
- Total
Deep Learning through deep learning
백준 25305번 커트라인 본문
문제 해석
본격적으로 sort 함수를 사용해볼 것이다. 이전에 정렬 알고리즘 구현에 사용했던 2중 for문 코드도 첨부하며, 이때 배열의 값들을 서로 바꿔주기 위해 사용했던 swap변수를 swap함수( 마찬가지로 STL)를 이용해볼 것이다.
문제는 첫번째 줄에 시험 응시자 N명이 주어지고, 상을 받을사람 k명이 주어진다.
두번째 줄에는 N명만큼의 사람들의 성적이 주어지고 성적이 높은사람 중 k명만 상을 받으니 k번째 상을 받는 사람의 성적이 커트라인이 된다.
N,k 변수를 각각 할당하고 (코드에선 a,b)
for문을 이용해 배열, 벡터를 입력받아 각각의 점수를 저장한다.
원래의 정렬 알고리즘 이었다면 2중 for문을 사용하여 배열의 길이만큼 두번 반복해주는 버블정렬 알고리즘을 사용하였다.
for문에 각각 i,j가 있다면, 배열이름[i], 배열이름[j]를 비교해 둘의 위치를 변경할지 정하면 된다.
배열의 원소의 위치를 바꾸기 위해서는 swap이라는 변수를 할당하여 배열이름[i]에 변수 값만 저장해두고 값만 빼오는 방식인데,
STL에서는 swap(숫자1,숫자2) 라는 함수만으로 숫자1,숫자2의 위치를 바꿔줄 수 있다.
STL 함수에서 sort함수는 배열,벡터를 정렬해주기 위해 사용하며 default값은 오름차순이다.
배열의 경우, sort(배열이름,배열이름 + 숫자) 형식으로 사용한다. 배열의 시작점에서 +숫자만큼까지 오름차순으로 정렬해주겠다는 의미이다.
벡터의 경우, sort(벡터이름.begin(),벡터이름.end()) 형식으로 사용한다. 벡터의 시작점(begin)에서 마지막까지(end) 오름차순으로 정렬해주겠다는 의미이다.
이렇게 배열을 정렬하고 출력값으로는 배열의 끝 인덱스인 배열이름[배열이름.size()] 에서 k번째만큼 뺀 인덱스가 상을 받는 커트라인 점수가 된다. 배열이름[배열이름.size()-k]
정답 코드
#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a, b; cin >> a >> b;
vector<int> k;
int k_input;
for (int i = 0; i < a; i++)
{
cin >> k_input;
k.push_back(k_input);
}
sort(k.begin(), k.end());
// 아래는 원래 정렬 알고리즘 구현 코드
//for (int i = 0; i < k.size(); i++)
//{
// for (int j = i; j < k.size(); j++)
// {
// if (k[i] > k[j])
// {
// swap(k[i], k[j]);
// // 아래는 원래 swap 변수 위치 바꾸기 구현 코드
// /*int swap = 0;
// swap = k[i];
// k[i] = k[j];
// k[j] = swap;*/
// }
// }
//}
cout << k[k.size() - b];
}
'Baekjoon_algorithm_heuristic' 카테고리의 다른 글
백준 7567번 그릇 (0) | 2023.02.08 |
---|---|
백준 10988번 팰린드롬인지 확인하기 (0) | 2023.02.08 |
백준 10817번 세 수 (0) | 2023.02.08 |
백준 2566번 최댓값 (0) | 2023.02.02 |
백준 2587번 대표값2 (0) | 2023.02.02 |