본문 바로가기

CodingTest

(33)
[BOJ 1110] 백준 더하기 사이클 - C++ 사용언어 : C++ 문제풀이 (1) 필요한 변수 N(int), count(int), result(int) N : 처음에 입력 받은 이후엔 계속 고정되는 원래의 값 count : 출력에서 요구하는 값 result : N과 비교할 수 있는 일시적인 결과값 int N; int count = 0; cin >> N; int result = N; 이 때, result값은 임의로 N값으로 초기화 해준다. (2) 반복문 구성 (+ result 값 계산) 우선 무한루프를 돌려준다. 적어도 한 번은 계산해줘야 함! (문제 자체가 계산을 몇 번 하는 건지 요구하는 것 + result를 N으로 초기화했기 때문에 당연히 처음엔 result와 N은 같음) result 의 10의 자릿수 : 이전 값의 1자릿수 (26이면 6) =>..
[BOJ 2164] 백준 좌표 압축 풀이 - C++ 사용언어 : C++ 문제풀이 * vector 이용!! (sort, erase, unique, lower_bound) (1) 2개의 vector가 필요하다. original vector, check vector original vector : 순서대로 좌표압축 값을 출력해야함 check vector : 좌표압축 값 계산할 때 사용 vector v(n); for (int i = 0; i > v[i]; } vector check(v); (2) check vector 변형해주기 중복되지 않는, 오름차순으로 정렬해주기. => 오름차순 정렬 후 중복된 값은 뒤로 보내준다. 중복된 값들은 다 지워준다. (중복 시작 된 곳부터 끝까지) sort(check.begin(), check.end..
[BOJ 2164] 백준 카드2 풀이 - C++ 사용언어 : C++ 문제풀이 * queue 이용하기 (1) queue에 1부터 n까지 순서대로 push한다 (2) queue front pop 해준다 (3) queue front를 push해주고, queue front를 pop해준다. (맨 앞에 있는 값 맨 뒤로 보내기) 이 동작을 queue size가 1이 될 때까지 반복 (즉, 1보다 클때까지 while문 돌리기) 전체코드 #include using namespace std; #include int main() { queue q; int n; cin >> n; for (int i = 1; i 1) { q.pop(); q.push(q.front()); q.pop(); } cout
[BOJ 11047] 백준 동전0 풀이 - C++ 사용언어 : C++ 문제풀이 * stack 이용하기! (1) 순서대로 동전 stack에 push하기 (오름차순이라 순서대로 push 가능) (2) stack top이 k보다 작으면 top으로 사용할 수 있을만큼 answer에 더해주고, k를 그만큼 감소시킨다(k를 top으로 나눈 나머지 값). (3) stack pop해준다. 전체코드 #include using namespace std; #include int answer; int main() { int n, k; cin >> n >> k; stack s; int tmp; for (int i = 0; i > tmp; s.push(tmp); } while (k) { if (s.top()
[programmers] 최소직사각형 풀이 - C++ 사용언어 : C++ 문제 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함번호 가로길이 세로길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니..
[programmers] 없는 숫자 더하기 풀이 - C++ 사용언어 : C++ 문제 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 수 ≤ 9 numbers의 모든 수는 서로 다릅니다. 입출력 예 numbers result [1,2,3,4,6,7,8,0] 14 [5,8,4,0,6,7,9] 6 문제풀이 크키가 10인 int 배열을 이용해 numbers에 존재하면 1, 존재하지 않으면 0 (flag) 존재하지 않는 값이라면 (flag[i]==0) answer에 i를 더해준다. 전체코드 #include #include #inc..
[programmers] 124 나라의 숫자 풀이 - C++ 사용언어 : C++ 문제 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법124 나라10진법124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. 제한사항 n은 500,000,000이하의 자연수 입니다. 입출력 예 n result 1 1 2 2 3 4 4 11 문제풀이 * 1,2,4가..
[programmers] 같은 숫자는 싫어 풀이 - C++ 사용언어 : C++ 문제 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : ..