⭐ 코딩테스트
[프로그래머스 C++] 마법의 엘리베이터
[프로그래머스 C++] 마법의 엘리베이터
2023.11.24[프로그래머스 C++] 마법의 엘리베이터 https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 구현 정답 코드 #include #include #include using namespace std; int solution(int storey) { vector level; // 배열에 storey의 끝자리 수부터 순서대로 담는다 while(storey){ level.push_back(storey % 10); storey /= 10; } int..
[프로그래머스 C++] 수식 최대화
[프로그래머스 C++] 수식 최대화
2023.11.23[프로그래머스 C++] 수식 최대화 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 순열 Permutation, 조합 Combination 문자열 do while(next_permutation(v.begin(), v.end())) 정답 코드 #include #include #include using namespace std; vector v; // 숫자 vector oper; // 연산자 long long answer; // 최종 결과..
[프로그래머스 C++] 괄호 변환
[프로그래머스 C++] 괄호 변환
2023.11.22[프로그래머스 C++] 괄호 변환 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 재귀 함수 Recursion 문자열 정답 코드 #include #include using namespace std; bool isCorrect(string str) // '올바른 괄호 문자열'인지 검사하는 함수 { int cnt = 0; for (char ch : str) { if (ch == '(') cnt++; else cnt--; if (cnt < ..
[프로그래머스 C++] [3차] 방금그곡
[프로그래머스 C++] [3차] 방금그곡
2023.11.21[프로그래머스 C++] [3차] 방금그곡 https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 문자열 검색 처음 시도한 코드 - 실패 #include #include #include #include using namespace std; vector result; string solution(string m, vector mu) { int n = mu.size(); string answer = "(None)"; for(int i=0; i 0)..
[백준 1715번 C/C++] 카드 정렬하기
[백준 1715번 C/C++] 카드 정렬하기
2023.11.20[백준 1715번 C/C++] 카드 정렬하기 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 해결전략 탐욕법, Greedy 그리디 알고리즘 priority_queue pQ; priority_queue는 기본적으로 내림차순 정렬(큰 수부터 차례대로 나오는 정렬)이다. priority_queue 선언을 하면 오름차순 정렬(작은 수부터 차례대로 나오는 정렬)로 바꿀 수 있다. 코드 #include #include #include #in..
[프로그래머스 C++] 메뉴 리뉴얼
[프로그래머스 C++] 메뉴 리뉴얼
2023.11.20[프로그래머스 C++] 메뉴 리뉴얼 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 조합 Combination 맵 Map 코드 #include #include #include #include using namespace std; vector answer;// 결과를 저장할 벡터 map myMap; // 각 메뉴 조합의 주문 횟수를 저장할 맵 int ch[10]; // 조합 생성 시, 해당 인덱스의 문자가 사용되었는지 확인하는 배열 //..
[백준 14502번 C/C++] 연구소
[백준 14502번 C/C++] 연구소
2023.11.19[백준 14502번 C/C++] 연구소 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 해결전략 구현, 브루트 포스 Brute Force 너비우선탐색 BFS 코드 #include #include #include using namespace std; int dirY[4] = { -1, 0, 1, 0 }; int dirX[4] = { 0, -1, 0, 1 }; int n, m; // n: 세로 길이, m: 가로 길이 int safe; // 안전 영역의 최대 크..
[백준 15683번 C/C++] 감시
[백준 15683번 C/C++] 감시
2023.11.18[백준 15683번 C/C++] 감시 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 해결전략 백트랙킹, Backtracking 코드 #include #include #include using namespace std; // 우, 상, 좌, 하 int dirY[4] = { 0, -1, 0, 1 }; int dirX[4] = { 1, 0, -1, 0 }; int n, m; int answer = 2147000000; vector v, ..
[프로그래머스 C++] 무인도 여행
[프로그래머스 C++] 무인도 여행
2023.11.17[프로그래머스 C++] 무인도 여행 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 너비 우선 탐색, BFS while(!Q.emtpy()) 가 돌기 전에 방문 체크 if (maps[y][x] != 'X' && ch[y][x] == 0) 를 먼저하여 다음 사이클에서 체크하지 않도록 한다. 정답 코드 #include #include #include #include using namespace std; int dirY[4..
[백준 15686번 C/C++] 치킨 배달
[백준 15686번 C/C++] 치킨 배달
2023.11.16[백준 15686번 C/C++] 치킨 배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 해결전략 백트래킹, Backtracking 정답 코드 #include #include #include using namespace std; int n, m; // n: 도시 크기, m: 선택할 치킨집의 개수 int answer = 2147000000; // 최소 치킨 거리를 저장할 변수 vector v; vector house, ch..
[프로그래머스 C++] 124 나라의 숫자
[프로그래머스 C++] 124 나라의 숫자
2023.11.16[프로그래머스 C++] 124 나라의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 진법 변환 구현 정답 코드 #include using namespace std; // n을 3진법으로 변환하되, 0 대신 4를 사용 string solution(int n) { string answer = ""; while (n > 0) { if (n % 3 == 0) { // 3진법에서는 '0'이지만 이 문제에서는 '0' 대신 '4'를 사용 a..
[프로그래머스 C++] 연속된 부분 수열의 합
[프로그래머스 C++] 연속된 부분 수열의 합
2023.11.15[프로그래머스 C++] 연속된 부분 수열의 합 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 누적합 슬라이딩 윈도우(Sliding Window) 알고리즘 처음 시도한 코드 - 실패 #include using namespace std; vector v; // 시작Idx x 끝Idx. 값은 부분 수열의 합 vector solution(vector seq, int k) { vector answer(2, -1); // 조건을 만족하는 부분..