전체 글 24

[프로그래머스][C++] 큰 수 만들기

문제https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 💡 문제 접근k개의 수를 제거 = ( number.length() - k )개의 수를 뽑는 것가장 큰 수를 뽑는다.앞 자리가 클 수록 크다.1. 0번째 인덱스부터 k번째까지의 범위 내에서 가장 큰 수를 찾는다.2. 뽑은 수 (가장 큰 수)를 answer에 삽입하고 그 수의 인덱스를 저장한다.3. 뽑은 수의 인덱스 다음 인덱스부터 다시 가장 큰 수를 찾는다. 이때, 탐색 범위를 1 늘려준다. ..

[프로그래머스][C++] 타겟 넘버

문제https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이💡 DFS, 재귀함수종료 조건: numbers 배열의 모든 수를 선택 완료다음 인덱스로 넘어가면서 + 또는 - 를 선택하여 연산한 값을 넘긴다. 코드#include #include using namespace std;int answer;void dfs(int idx, int sum, int target, vector &numbers) { if (idx == numbers.size()) {..

[프로그래머스][C++] 스킬트리

문제https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이1️⃣ queue1. 알파벳 개수(26) 크기의 배열로 순서와 상관없는 스킬(true)과 선행 스킬이 필요한 스킬(false)을 표시한다.2. 스킬의 순서 비교를 위해 큐를 생성하여 skill 값을 할당한다.3. skill_trees 내의 문자열 탐색    (1) 선행 스킬이 필요없는 스킬은 무시한다.    (2) 선행 스킬이 필요한 스킬일 경우, 큐를 이용해 순서가 같은지 확인한다. (que..

[프로그래머스][C++] 키패드 누르기

문제https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 💡 규칙1, 4, 7: 왼손 3, 6, 9: 오른손2, 5, 8, 0: 거리 계산(더 가까운 쪽) 💡 거리 계산키 변환: *: 11 / 0: 12 / #: 13                                                  1   2   3            1     2     3                                              ..

[BOJ][C++] 백준 20546번: 🐜 기적의 매매법 🐜

문제https://www.acmicpc.net/problem/20546풀이성민(BNP)남은 현금으로 주식을 살 수 없을 때까지 주식 매수준현(TIMING)3일 연속 가격 상승: 전량 매도3일 연속 가격 하락: 전량 매수매수할 때는 (성민과 똑같이) 남은 현금으로 주식을 살 수 없을 때까지 매수코드#include #include using namespace std;const int DAY = 14;int bnp(int cash, vector &price) { int stock = 0; for (int i = 0; i = 0) { cash -= price[i]; stock++; } } return stock * price[DAY - 1..

[프로그래머스][C++] 체육복

문제https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이1. 모든 학생들의 체육복 수 계산    (1) 처음에 모든 학생들은 1개의 체육복을 가지고 있다.    (2) 여벌의 체육복이 있는 학생: +1    (3) 체육복을 도난당한 학생: -12. 1번 학생부터 체육복을 빌리는 경우 계산    (1) 도난당한 학생(체육복 개수: 0)은 양옆의 학생에게 체육복을 빌릴 수 있는지(체육복 개수: 2) 확인한다.    (2) 왼쪽 학생에게 우선적으로 빌린다..

[BOJ][C++] 백준 1212번: 8진수 2진수

문제https://www.acmicpc.net/problem/1212풀이💡 8진수 한 자리는 2진수 세 자리로 변환할 수 있다.(ex) 0 → 000, 1 → 001, ... , 7 → 111 1. 0 ~ 7 을 2진수로 변환한 문자열 배열을 생성한다.2. 입력받은 8진수 수를 앞에서부터 한 자리씩 2진수로 변환한 문자열로 출력한다.    *이때, 맨 앞의 수가 0으로 시작하지 않도록 int로 변환한다. 🚨 자릿수 유의    - 주어지는 수의 길이는 333334 이하이고 이진수로 변환하면 333334*3이다.    - 맨 앞의 수만 int형으로 바꾸지 않고 전체를 int형으로 바꾸면 범위를 초과한다. 코드#include #include using namespace std;int main() { ..

[BOJ][C++] 백준 9184번: 신나는 함수 실행

문제https://www.acmicpc.net/problem/9184풀이문제에 나와있는 함수를 작성하면 아래와 같다.int w(int a, int b, int c) { if (a 20 || b > 20 || c > 20) return w(20, 20, 20); else if (a  재귀의 횟수를 줄이기 위해 w의 결과 값을 dp 배열에 저장할 수 있다.a, b, c의 값에 따른 결과값을 저장하기 위한 3차원 dp 배열을 선언한다.w(a, b, c) 함수를 실행했을 때 배열에 이미 저장된 값이면, 재귀 과정을 생략하고 그 값을 불러온다.배열에 값을 저장할 때 인덱스에 음수 또는 20 이상의 수가 들어가지 않도록 유의한다.코드#include #include using namespac..

[SWEA][C++] 1209. [S/W 문제해결 기본] 2일차 - Sum

문제https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이각 행의 합, 각 열의 합, 각 대각선의 합을 각각 구하고 비교한다.코드#include #include using namespace std;const int N = 100;int calculate(vector> &v) { int ans = 0, row_sum = 0, col_sum = 0, r_sum = 0, l_sum = 0; // 행, 열, 우하향, 좌하향 대각선 for (in..

[SWEA][C++] 2805. 농작물 수확하기

문제https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 풀이중앙에 있는 행(마름모의 대각선)은 모든 열의 수익을 더한다.그리고 위로 갈수록 또는 아래로 갈수록 수익을 더하는 열이 줄어든다.이러한 점을 이용하여, 중앙 행(n/2 행)과의 차이에 따라 각 행의 수익을 계산할 수 있다.현재 행과 중앙 행의 차이 = 0일 때, 0 ~ n - 1 열의 수익을 얻을 수 있다.현재 행과 중앙 행의 차이 = 1일 때, 1 ~ n - 2현재 행과 중앙 행의 차이 = 2..