Programing 182

[C++][백준 2075] N번째 큰 수

https://www.acmicpc.net/problem/2075풀이n번째로 큰 수를 찾으면 되기 때문에 저장할 배열의 크기는 n이면 된다우선 n개까지는 배열에 계속 넣어주다가,n + 1번째 숫자부터는 배열 내에서 가장 작은 값과 비교해서 더 클 경우에 가장 작은 값을 빼고 입력받은 값을 넣어준다이 과정을 반복하면 모든 입력이 끝났을 때 배열에서 가장 작은 값이 정답이다 제출 코드#include #include using namespace std;priority_queue, greater> q;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, input; cin >> n; for (int i ..

[C++] 반올림, 올림, 내림, 소숫점 n번째 자리에서 반올림 (round, ceil, floor, fixed, precision)

내림, 올림, 반올림#include float a = 3.141592;cout 헤더 파일 cmath 안에 있는 세 가지 함수이다* round는 소숫점 아래 첫번째 자리에서 반올림한다 float a = 3.141592;cout round 함수는 C++11부터 지원하기 때문에, 위와 같은 방법으로도 반올림을 구현할 수 있다 소숫점 n번째 자리에서 반올림float a = 3.141592;cout.precision(3);cout precision 함수는 n번째 자리까지 출력한다(소숫점 무시)cout  소숫점이 고정되고 나면 precision 함수로 n번째 자리까지 출력하도록 지정하면 소숫점 아래 n번째 자리까지 출력한다 precision 함수를 사용하면 전부 자동으로 반올림이 된다

Programing/C++ 2025.01.22

[C++] 입력이 더 이상 안 들어올 때까지 입력 받기(cin.eof, getline)

EOF란 end of file의 약자이다입력이 끝나는 여부를 판단하기 위해서는 cin.eof()를 사용할 수 있는데,파일의 끝까지 읽은 뒤 다음 파일을 읽으려고 할 때 파일이 끝나 읽을 데이터가 없을 때 eof가 된다(true 반환)* 입력 파일을 따로 생성해서 읽지 않는 경우, ctrl + z 키를 이용해 eof 상태를 전송해 줄 수 있다string str;while(!cin.eof()){ getline(cin, str); // Or cin >> str;}위와 같은 방법으로 입력이 끝날 때까지 while문을 돌며 입력을 받도록 할 수 있다 혹은 아래와 같이 더 간결하게 변경할 수 있다string str;while (cin >> str){ cout // getline 헤더 파일#in..

Programing/C++ 2025.01.22

[C++][백준 9375] 패션왕 신해빈

https://www.acmicpc.net/problem/9375풀이가지고 있는 각 의상의 종류로 나올 수 있는 경우의 수를 구하는 문제다map을 이용해 각 의상별로 몇 벌을 가지고 있는지 체크하고, 경우의 수를 구해주면 된다  제출 코드#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t, n; string input; cin >> t; while(t--) { map m; cin >> n; while(n--) { cin >> input >> input..

[C++][백준 17276] 배열 돌리기

https://www.acmicpc.net/problem/17276풀이직접 배열을 그려 시계/반시계 방향으로 돌아갈 때 어느 위치에 있던 수가 어디로 가는지 체크해서 그대로 구현하였다 제출 코드#include #include using namespace std;int arr[500][500];int res[500][500];int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t, n, degree; cin >> t; while(t--) { cin >> n >> degree; for (int i = 0; i > res[i][j]; int mid = n / 2;..

[C++][백준 1138] 한 줄로 서기

https://www.acmicpc.net/problem/1138풀이키가 1인 사람부터 시작한다면 이후에 오는 사람들은 전부 본인보다 큰 사람들일 것이기 때문에 주어진 수(자기보다 키가 큰 사람이 왼쪽에 몇 명 있었는지)만큼 왼쪽이 비어 있어야 한다 주어진 수만큼 왼쪽을 비운 다음에 본인이 들어가면 되는데, 이미 앞서 들어간 사람이 있는 경우 들어갈 자리가 있을 때까지 오른쪽으로 이동한다(오른쪽으로 계속 이동해도 본인보다 앞서 들어간 사람은 전부 본인보다 작으므로 상관없다) 제출 코드#include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n..

[C++][백준 1913] 달팽이

https://www.acmicpc.net/problem/1913풀이실제로 사람이 채워나가듯 빙글빙글 돌며 2차원 배열을 채운다.직접 해당 그림을 그려보다 발견한 규칙들이다가장 큰 수(n^2)부터 시작해서 하나씩 수를 줄여나가며 채워나간다고 했을 때1. 채워나가는 순서는 아래쪽, 오른쪽, 위쪽, 왼쪽 순으로 반복된다2. (처음을 제외하고) 방향이 바뀌기까지의 수가 방향이 두 번 바뀔 때마다 1씩 줄어든다 위 규칙을 이용해 코드를 작성하였다(문제에서 n은 홀수라고 나와있었기 때문에 홀/짝수에 따라 초기값을 다르게 세팅할 필요가 없었다) 1. n * n 부터 시작해서 row 0, col 0의 위치에서부터 아래방향으로 채워나간다2. 하나씩 채울 때마다 count를 세 주다가, 방향이 바뀌어야 하는 시점에 도달..