코딩테스트 14

[BOJ][C++] 백준 2002번: 추월

문제https://www.acmicpc.net/problem/2002풀이🔍 접근차가 들어간 순서를 숫자로 나타내기A차가 다른 차를 추월했다는 것을 아는 방법(1) A의 들어갈 때 인덱스보다 나올 때 인덱스가 작으면 추월?       → 들어갈 때 인덱스가 A보다 큰 차들이 추월하면서, A의 나올 때 인덱스도 뒤로 밀릴 수 있으므로            A의 인덱스 비교만으로는 판단할 수 없다.(2) A보다 늦게 나온 차 중에서, A보다 들어갈 때 인덱스가 작은 차가 하나라도 있으면      A보다 먼저 들어왔는데 A보다 뒤에 나온 것이므로 A는 터널 안에서 추월을 했다고 판단한다.🔨 구현map을 이용해 차량 번호(key)와 들어간 순서(value)를 저장한다.vector에 나온 차의 차량 번호를 저장한..

[프로그래머스][C++] 네트워크

문제https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이💡 문제 접근한 컴퓨터와 연결된 다음 컴퓨터를 탐색하고, 그 다음 컴퓨터와 연결된 컴퓨터를 계속해서 탐색해 나간다.탐색 중 연결이 끊기면 하나의 네트워크가 완성된 것 = 네트워크 + 1💡 DFS, 재귀함수1번 컴퓨터와 연결되어 있는 컴퓨터를 탐색하기 위해 dfs 함수를 호출한다.1번 컴퓨터가 2번 컴퓨터와 연결되어 있는 것을 발견한다.2번 컴퓨터와 연결되어 있는 컴퓨터를 탐색하기 위해 df..

[프로그래머스][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..