본문 바로가기

반응형

분류 전체보기

(139)
프로그래머스 점프와 순간이동 C++ 프로그래머스 : 점프와 순간 이동 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 한 번에 한칸을 가거나 * 2만큼 이동하는 경우에 가장 건전지를 조금 사용하면서 목적지에 도달하는 경우의 건전지 사용량을 구하는 문제다. - 풀이 #include using namespace std; int solution(int n) { int ans = 0; while(n != 0){ if(((double)n/2) != n/2){ ans++; } n /= 2; } return ans; } 도달해야 하는 지점 n을 2로 나누었을 때 나머지 1이 생기면 한 칸 움직이..
프로그래머스 멀리 뛰기 C++ 프로그래머스 : 멀리 뛰기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 한 번에 한 칸, 또는 두 칸을 뛸 수 있는 사람이 도착지에 도착할 수 있는 방법의 가지수를 출력하는 문제다. - 풀이 #include #include using namespace std; long long solution(int n) { long long answer = 0; int twoB = 1; int oneB = 2; if(n == 1) return 1; else if(n == 2) return 2; for(int i = 2; i < n; i++){ answer =..
프로그래머스 예상 대진표 C++ 프로그래머스 : 예상 대진표 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 A와 B가 주어졌을 때 몇번의 대결만에 만나게 될 지 구하는 문제다. - 풀이 #include using namespace std; int solution(int n, int a, int b) { int answer = 0, sum = 1;; bool left, right; while(sum != n){ answer++; sum *= 2; } while(sum != 0){ int half = sum/2; left = (a - half
[백준][C++] 15649 : N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net - 문제 1부터 N까지 자연수 중에서 중복 없이 M개를 고르는 수열을 찾는 문제다. - 해설 visited를 이용해서 풀 수 있는 문제다... 음.......... 백트래킹 관련된 문제는 어떻게 설명해야 할 지 모르겠다... - 풀이 #include using namespace std; int N, M; int arr[9]; int visited[9] = {0}; void dfs(int cnt)..
[백준][C++] 11051: 이항 계수 2 https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net - 문제 nCk가 주어지면 10007로 나눈 나머지를 출력하는 문제다. - 해설 주석으로 된 부분이 스스로 풀어본 부분인데, % 10007하는 부분 때문에 문제가 발생하는 것 같다. 위와 같은 그림처럼 n-1Ck-1 이랑 n-1Ck를 알면 nCk를 구할 수 있다는 것을 이용해서 푸는 사람들이 많았고, 여러개 찾아본 결과 이러한 방식으로 밖에 푼 사람들이 없었던 것 같다. - 풀이 #include using namespace std; int a[1001][1001]; ..
[백준][C++] 2004: 조합 0의 개수 https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net - 문제 두 수가 주어지면 nCm에서 끝자리 0의 개수를 구하는 문제다. - 해설 nCm은 n! / (n-m)! * m!이다. 여기서 끝자리 0의 개수를 구하기 위해서는 1. n!에서 2*5의 개수를 구해서 2. (n-m)!에서 2*5의 개수를 빼고 3. m!에서 2*5의 개수를 빼면 된다. 1. n!에서 2와 5의 개수를 구해보자. 예를 들어 n이 25이라고 하면 25 / 2 = 12 (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22..
[백준][C++] 3036 : 링 https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net - 문제 링이 여러개 주어지면 첫 번째 링이 한 바퀴 돌 때 나머지 링들은 몇 바퀴 도는지 푸는 문제다. - 해설 두 번째 링이 첫 번째 링보다 크면 느리게 돌고 두 번째 링이 첫 번째 링보다 작으면 빠르게 돈다는 것만 알고 기약 분수 형태로 만드는 방법을 알면 풀 수 있다. 이 것도 유클리드 호제법으로 풀 수 있다. - 풀이 #include using namespace std; int gcd(int a, int b) { retu..
[백준][C++] 2981: 검문 https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net - 문제 숫자가 N개 주어졌을 때 무엇으로 이 숫자들을 나누었을 때 나머지가 같을 수 있는지 찾는 문제다. - 해설 아래에 주석처리 된 부분이 스스로 풀어 본 건데, 마지막 % 조금 남기고 계속 틀리다고 나와서 찾아봤다. 예를 들어 3,6,34,38이 주어지면 38 - 34 = 4 34 - 6 = 28 6 - 3 = 3 이 나오는데, 이 차를 이용해서 유클리드 호제법을 이용해 최소공배수를 구해준다. 결국 나누었을..

반응형