본문 바로가기

Coding Test32

[이취코] Chapter 04. 구현 * 해당 게시글은 [이것이 취업을 위한 코딩테스트다, 나동빈] 교재를 학습하고 정리한 글입니다. 1. 구현 유형 완전 탐색시뮬레이션 모든 경우의 수를 전부 다 계산하는 방식 문제에서 제시한 알고리즘을 한 단계씩 차례대로 수행하는 방식   2. 구현 시 고려해야 할 제약 사항2.1. 자료형의 범위정수형자료형 크기자료형 범위int4byte-2,147,483,648 ~ 2,147,483,647long long8byte-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807  2.2. 채점 시스템대부분의 코딩 테스트 환경에서는 아래의 채점 시스템 환경이 주어진다.시간 제한 : 1초메모리 제한 : 128MB  3. 예제#include using namespace std;.. 2025. 1. 6.
[이취코] Chapter 03. 그리디 * 해당 게시글은 [이것이 취업을 위한 코딩테스트다, 나동빈] 교재를 학습하고 정리한 글입니다. 1. 그리디 알고리즘현재 상황에서 지금 가장 좋은 것을 골라나가는 방법현재의 선택이 나중에 미칠 영향은 고려하지 않음예) 다익스트라 알고리즘, 크루스칼 알고리즘 2. 언제 사용할까?문제를 보고 현재 상황에서 가장 좋아보이는 것을 선택할 때 문제가 풀릴 지를 파악할 수 있어야 함그리디로 판단할 때는 정당한지(= 다른 방법이 불가능한 지) 검토할 수 있어야 함 '가장 큰 순서대로', '가장 작은 순서대로' 와 같은 기준을 알게 모르게 제시해주는 편정렬 알고리즘과 함께 결함된 문제가 많음 3. 예제#include using namespace std;int coins[4] = {500, 100, 50, 10};int.. 2024. 10. 31.
[BoJ] #1182 부분 수열의 합 / c++ https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 부분수열의 합 2 초 256 MB 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 .. 2023. 7. 27.
[C++ 줍줍] next_permutation과 순열/조합 1. header #include 2. 순열 next_permutation(v.begin(), v.end()) ex. v = {1, 2, 3, 4} (1) 입력 벡터가 다음 순열로 바뀌면서 true를 리턴 : v={1, 2, 4, 3}, true 리턴 (2) 마지막 순열까지 모두 바뀌었다면 false를 리턴 : v={4, 3, 2, 1}, false 리턴 따라서, (1)때문에 while문이 아닌 do-while문을 사용해야 하고 (처음 자신 포함하려고) (2)때문에 while문 조건문이 next_permutation이 된다. void permutation() { int arr[] = { 1, 2, 3, 4 }; do { for (int i = 0; i < 4; i++) { cout 2022. 9. 20.
[C++ 줍줍] 올림, 내림, 반올림 ▷ 문제 상황 1 숫자를 올림, 내림한 결과를 알고 싶다 ! ▶ 해결 방법 1 ceil( ), floor( ) 메소드를 이용 * 헤더 : #include int c1 = ceil(2.2); // c1 = 3 int f1 = floor(4.7); // f1 = 4 ▷ 문제 상황 2 숫자를 반올림한 결과를 알고 싶다 ! ▶ 해결 방법 2-1 floor( ) 메소드와 0.5 이용 * 헤더 : #include int f1 = floor(4.7 + 0.5); // f1 = floor(5.2) = 5 int f2 = floor(4.2 + 0.5); // f2 = floor(4.7) = 4 ▶ 해결 방법 2-2 round( ) 메소드이용 * C++ 11 부터 사용 가능 * 헤더 : #include int c1 = r.. 2022. 9. 5.
[C++ 줍줍] 문자열 자르기 : substr( ) ▷ 문제 상황 문자열에서 원하는 만큼만 잘라내서 사용하고 싶다 ! ▶ 해결 방법 substr( ) 메소드를 이용 # substr( ) 사용법 1. 시작 인덱스, 길이 string s1 = "Happy"; string s2 = s1.substr(1, 3); // s2 = "app"; 2. 시작 인덱스만 이용 : 그 위치부터 끝까지 string s1 = "Happy"; string s2 = s1.substr(1); // s2 = "appy"; 2022. 9. 5.
[알튜비튜 줍줍] sort 함수 정리 std::sort 1. parameter 배열의 시작 위치, 끝 위치 2. 정렬 기준 [default] 오름차순 [custom] sort 함수의 3rd 인자로 다양한 비교함수 cmp를 넣어주면, 그 함수 기준으로 정렬 가능 ※ 내림차순 : sort ( , , greater()) ※ cmp (int a, int b) ① a가 b의 앞에 와야 할 경우 true를 리턴하게끔 설계 bool cmp(int a, int b) { if(a > b) return true; // a >= b 하면 안됨 return false; } ② a와 b의 우선순위가 같으면 false 반환해야 함 ( false를 리턴하는 경우, swap 한다는 사실을 숙지하고 있자! ) ③ cmp의 인자로 STL이나 클래스 객체가 전달되는 경우, .. 2022. 9. 3.
[프로그래머스 Lv.2] 게임 맵 최단거리 / c++ [출처] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시.. 2022. 8. 29.
[C++ 기초] 템플릿 1. 템플릿 1-1. 템플릿이란 ? 인스턴스를 생성하기 위한 틀은 클래스! 이와 유사하게, 함수나 클래스를 생성하기 위한 틀이 템플릿 이때, 템플릿은 모든 타입을 대변하는 T 타입을 이용해서 선언되는데, 덕분에 T 자리에 어떤 타입이 들어오는지에 따라 다양한 함수, 클래스를 생성할 수 있다. 🔔 제네릭(Generic) 프로그래밍 이처럼 일반화된 틀(템플릿)에 다양한 인자를 전달함으로써 여러가지 함수, 클래스를 만드는 프로그래밍 💥 템플릿 인스턴스화 (구체화) 정의된 템플릿에 구체적인 데이터 타입을 가진 인자를 전달함으로써 실제 함수, 클래스를 생성하는 과정 1-2. 템플릿의 종류 (1) 클래스 템플릿 (2) 함수 템플릿 1-3. 템플릿 선언 방법 template template 2. 함수 템플릿 2-1... 2022. 8. 18.