목록C++/Baekjoon (C++) (35)
have to do_yeon

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 위 문제는 pair과 sort 개념을 활용하여 풀면 쉽게 풀 수 있다. 비교해주는 함수를 첫번째 인자만 사용해서 비교하게 한다. 그리고 함수를 정렬할 때 sort가 아닌 stable_sort를 사용해야 정답으로 인정된다. 첫번째 인자가 같을 경우 들어온 순서대로 정렬하게 한다. 제출 답안 #include #include using namespace std; int comp(pair x, pair y){..

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 반복문을 사용하려고 했지만 아무리 생각해도 아닌 것 같아서 두 개를 한 쌍으로 취급하는 방법, 또는 개념이 있는지 알아보았다. 그 개념은 바로 pair 이다. https://have-to-do-yeon.tistory.com/49 [C++] Pair Pair 두 데이터 값을 하나의 쌍으로 묶어줄 때 사용한다. 헤더파일 및 선언방법 헤더파일 : Pair 선언 : pair 이름; #incl..

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 처음에 단순하게 반복문을 사용하여 돌려봤더니 시간초과가 떴다. 그래서 수식을 사용하여 해결하는 방법을 생각했다. 생각해야할 중요한 부분이 있다. 달팽이가 정상에 도달할 때 딱 맞춰서 정상에 도착해서 낮에 끝나는지, 아니면 아쉽게 도달하지 못하여 밤을 한 번 지내고 그 다음날 낮에 도달하는지이다. 나는 이 부분을 달팽이가 다음날을 마지막 날로 하여 정상에 갈 수 있는지, 아니면 하루가 더 필요한지를 나머지를 이용하여 확인하였다. 자세한 설명은 주석으로 첨부..

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 자신을 제외한 약수가 없는 수가 소수이므로 2부터 n/2(자기자신/2)까지만 확인하면 된다. 소수는 1보다 큰 자연수여야 한다. (자기자신/2)보다 큰수는 약수가 될 수 없으므로 i를 2부터 last까지 1씩 증가시키며 반복한다. n을 i로 나누었을때 나머지가 0이면(즉, i는 n의 약수가 아님), 소수가 아니므로 0을 반환한다. (i가 약수이므로 n은 소수가 아님) 1~last(자기자신/2)사이에 약수가 없으므로 소수이다. 제출 답안 #include using n..

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 어떻게 풀었는지 나도 잘 모르겠다. 얼떨결에 풀어냈고, 성공했는데... 하나하나 다시 살펴보자! 처음에 브루트포스 알고리즘 항목임을 확인하고, 시간 제한이 2초임을 확인했다. 그냥 풀고싶은 대로 풀어도 시간 내에 풀 수 있을 것 같아 무작정 1이 입력되면 출력되어야 할 666 부터 시작하는 반복문을 활용하였다. 현재 내가 알고 있는 지식 내에서, int의 형태이면 그 숫자 안에 '666'이라는 ..

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정렬해야 한다는 말을 보고 바로 sort를 떠올렸다. 따로 함수를 만들어 sort의 세번째 인자로 넣게 되면, 세번째 인자의 조건에 따라 정렬한다고 예전에 공부한 적이 있었다. 따라서 comp() 비교함수를 만들어 세번째 인자로 넣어주었다. 참고 >> https://blog.naver.com/ndb796/221227975229 또한 comp() 비교함수를 만들 때 return 반환값에 ..

https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 위 문제에서 말하는 이항계수는 조합 nCk를 말한다. 이므로 팩토리얼을 계산하는 함수를 따로 설정하여 숫자를 받으면 그 수에 대해 팩토리얼 함수를 지정하면 해결할 수 있다. 제출 답안 #include using namespace std; int fact(int x){ int fac = 1; for(int i = x; i >=1; i--){ fac = fac * i; } return fac; } int main(void){ int N, K, result; cin>> N >>..

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 처음에는 저장을 한 후에, 오름차순으로 정렬하고 그것을 출력하는 방식을 사용했다. 그랬더니 메모리 초과가 떴다. 그래서 생각한 방법이, 숫자를 받고 바로 카운팅 하는 방법이었다. (처음에는 N으로 전부 해결할 수 있지 않을까 했는데, 그냥... 그냥 했다. 나중에 다시 풀어보아야겠다.) 숫자를 받고, 숫자에 따른 배열 순서에 +1을 해줬다. 그런데 이것을 출력하려고 보니 시간초과가 떴다. 입출력의 수가 많을 때는(시..