[백준] 1205번 : 등수 구하기 (C++) - 실버 4
·
코딩 테스트
링크 : https://www.acmicpc.net/problem/1205  해당 문제는 주어진 세 개의 입력값에 대하여 조건에 맞는 등수를 출력하는 문제다. 문제 해결 시 고려 사항이다. N : 기존에 등록된 점수의 개수S : 태수의 새로운 점수 → 조건에서 제시되지 않아 사용된 임시 변수P : 리스트에 갱신 가능한 점수의 총 개수이 문제를 해결하기 위한 가장 큰 방향성은 조건에 맞춰 점수를 갱신하되, 기존의 점수 중 갱신하려는 점수와 같은 것이 있다면 조건에 맞춰 갱신 여부를 결정하는 조건을 작성해야 한다는 것이다. 먼저 변수를 초기화한다./*N : 기존에 등록된 점수의 개수S : 태수의 새로운 점수P : 등록 가능한 점수의 최대 개수*/int N, S, P;int place = 1; // 갱신할 점..
[백준] 1018번 : 체스판 다시 칠하기 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '브루트 포스' 단계에 해당한다.링크 : https://www.acmicpc.net/problem/1018 해당 문제는 입력값으로 주어진 N x M 체스판에 대하여 8 x 8 형태로 임의의 구간을 지정해 수정해야되는 체스판 칸의 개수가 최소가 되는 경우에서의 수정이 필요한 체스판 칸의 개수를 출력하는 문제이다. 문제 해결 시 고려 사항이다.N : 행의 개수, 8 M : 열의 개수, 8 수정이 필요한 체스칸의 개수 출력변수 초기화에 앞서, 문제를 해결하기 위한 초기 접근 및 고려 사항에 대해 몇 가지 설명하려 한다. 작성자는 처음 풀었을때는 각 입력값을 벡터에 저장하고, 인덱스 별 값에 대하여 고쳐야 할 자리인지 확인하는 방식으로 코드를 작성했었는..
[백준] 2839번 : 설탕 배달 (C++) - 실버 4
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '브루트 포스' 단계에 해당한다. 링크 : https://www.acmicpc.net/problem/2839 해당 문제는 주어진 임의의 N이라는 정수에 대하여 가장 적은 x개의 3과 y개의 5의 합으로 표현하는 전형적인 브루트 포스 문제이다. 왜냐하면 주어진 조건 중, 두 수의 합으로 나타낼 수 없는 수에 대하여 -1을 출력해야 하는데, 나타낼 수 있는지에 대한 여부는 결론에 도달할 때까지 계산을 해봐야 하기 때문이다. 문제 해결 시 고려 사항이다.N : 설탕 봉지 수설탕 봉지 무게 : 3 || 5가장 적은 봉지 수로 표현되어야 함3과 5의 합으로 표현하지 못할 경우 -1 출력 위의 조건에 맞게 먼저 변수 초기화 후, 입력값을 받는다.int N,..
[백준] 2559번 : 수열 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '누적합' 단계에 해당한다. 링크 : https://www.acmicpc.net/problem/2559 해당 문제는 하나의 배열에 누적합을 표현함으로써 구간별 합을 표현하는 방식에 대해 고민해보기 좋은 문제였다. 기본적으로 위와 같은 문제를 해결하는 원리는 부분 합의 시작 인덱스와 끝을 나타내는 변수 두 개를 선언하고, 각 구간별 합을 구한 뒤, 이전 구간의 합과 비교하여 더 큰 값을 누적합 저장 변수에 갱신하는 방향으로 진행된다. 방향성 자체는 이러하나, 사실 별도의 변수 두 개를 선언할 필요는 없다. 왜냐하면 일종의 포인터 역할을 하는 두 개의 변수를 별도로 선언하여 원초적으로 각 구간의 합을 매번 구하는 것과, 각 입력값에 대한 합의 결과를..
[백준] 20920번 : 영단어 암기는 괴로워 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '심화' 단계에 해당하는 조건에 따른 정렬 문제이다. 링크 : https://www.acmicpc.net/problem/20920    다음으로 코드 전문이다. 문제 해결을 위해 떠올렸어야 할 요소들을 각각의 코드와 비교하며 서술하고자 한다.#include #include #include #include using namespace std;void fast_io() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);}bool compare(pair &a, pair &b) { if (a.second == b.second) { if (a.first.length() ..
[백준] 1008번 : A / B (C++) - 브론즈 5
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 나눗셈 연산에 대한 기본 문제이다. 링크 : https://www.acmicpc.net/problem/1008    문제 난이도에 비해 정답 비율이 낮은 것을 볼 수 있는데, 출력 조건을 지키지 않아 그런 것으로 예상된다. 문제 자체는 정말 간단하다. A / B를 구현하되, 오차가 10^-9 이하이기만 하면 되지만, 이 문제에서 얻어가야 하는 내용은 바로 C++에서의 소수점 표현 방법이다. C++는 입출력 시 기본적으로 표준 라이브러리의 모든 요소가 담겨 있는 std 네임스페이스(namespace) 내부의 cout과 cin을 사용한다. 이는 기존의 C 입출력에 사용되는 printf, scanf 함수와 같은 역할을 수행한다고 생각하면 된다.  여기서 차이점은 cout은..