BOJ - 분수찾기 1193
·
코딩테스트
해결방법문제를 자세히 살펴보면 삼각수를 구하는 문제와 같다는 것을 알 수 있다.k*(k+1)/2 이 공식을 이용하여 어느 라인인지, 그리고 몇번째 위치인지를 구하고 분자와 분모를 구해주면 된다. 정답 코드#include using namespace std;int main(){ long long X, k = 1, pos, right, left; cin >> X; while (X > k * (k + 1) / 2) { k++; } pos = X - (k * (k - 1) / 2); if (k % 2 == 0) { right = pos; left = k - pos + 1; } else { right = ..
BOJ - 트ㅏㅊ; 4378
·
코딩테스트
해결방법우선 키보드 레이아웃을 문자열로 저장하고, 문자열을 한 칸씩 왼쪽으로 밀어준다.그후, 입력이 들어오면 우리가 만들어놓은 복원된 문자열을 이용하여 입력된 문자열을 복원한다. 정답 코드#include #include using namespace std;void MoveMove(char mapping[], const string& row){ for (int i = 1; i
BOJ - ISBN 14626
·
코딩테스트
해결방법숫자와 *이 섞인 문자열을 입력받고, 이 문자열을 *이 나올때까지 반복문을 돌려서 위치를 찾는다.찾은 다음 숫자들의 가중치에 따른 값을 구하고, 전체 숫자들과 가중치를 곱한 값에서 *과 가중치를 곱한값을 제외한 값이 나머지 * 10이 되는것을 이용하여 *을 구해주면 된다. 정답 코드#include using namespace std;int main(){ string ISBN; cin >> ISBN; int sum = 0, pos = -1; for (int i = 0; i
BOJ - 스택 2 28278
·
코딩테스트
해결방법https://skajalf.tistory.com/113 스택 문제의 2번째 버전이다. 이번에는 10000까지였던 명령의 수가 100만까지로 늘어났다. 그외 차이는 없다. 정답 코드#include #include using namespace std;struct Stack{ int top; int* array;};Stack* createStack(int maxSize){ Stack* stack = new Stack(); stack->top = -1; stack->array = new int[maxSize]; return stack;}void Push(Stack* stack, int x){ stack->array[++stack->top] = x;}int P..
BOJ - 과일탕후루 30804
·
코딩테스트
해결방법우선 헷갈리기 쉬운데, 두번째 줄에 입력되는 숫자는 과일의 개수가 아니라 과일의 번호이다... 핵심 로직은 구간 안의 과일의 종류가 2종 이하가 되도록 최대 길이의 구간을 찾는 것이다.왼쪽부터 오른쪽으로 한칸씩 구간을 늘리면서 과일을 추가하고, 3종이 되면 왼쪽 구간을 좁혀서 2종이 되도록 만든다.이렇게 해서 최대값을 찾는 것이다. 정답 코드#include #include using namespace std;int main(){ int N, range = 0, side = 0, fruits = 0; cin >> N; vector S(N); vector count(10, 0); for (int i = 0; i > S[i]; for (int i = 0; i 2..
BOJ - 거스름돈이 싫어요 20003
·
코딩테스트
해결방법모든 아이템 가격이 분수 형태라는 점에서 제작사가 변태라는 사실을 알 수 있다.핵심은 다음과 같다.아이템의 가격들이 전부 분수 단위이고, 어떤 코인 단위로 나눴을 때 모든 가격이 딱 떨어지게 하고 싶다.그 코인단위가 가능한 최대가 되도록 찾아야 한다. 풀이1. 모든 분모의 최소공배수를 구한다.2. 그다음 각 가격을 그 공통 분모로 바꾼 정수 분자로 변환한다.예를 들어 1/4, 2/5같은거를 분모 20으로 맞춘다면 5/20, 8/20이 된다.3. 이제 모든 분자들의 최대공약수를 구한다.4. 구한 최대공약수와 최소공배수를 이용해 최종 코인 단위를 만들고, 분자와 분모를 정리해서 기약분수 형태로 만들어준다. 정답 코드#include #include using namespace std;long long ..