⭐ 코딩테스트/프로그래머스
[프로그래머스 C++] 리코쳇 로봇
[프로그래머스 C++] 리코쳇 로봇
2024.02.09[프로그래머스 C++] 리코쳇 로봇 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 너비우선탐색 BFS 정답코드 #include #include #include #include using namespace std; const int INTMAX = 99999; int dirY[4] = { -1, 0, 1, 0 }; int dirX[4] = { 0, -1, 0, 1 }; int solution(vector v) { int r = v.s..
[프로그래머스 C++] 유사 칸토어
[프로그래머스 C++] 유사 칸토어
2024.02.08[프로그래머스 C++] 유사 칸토어 https://school.programmers.co.kr/learn/courses/30/lessons/148652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 수학 재귀 처음 시도한 코드 - 시간초과 #include using namespace std; int solution(int n, long long l, long long r) { string str = "1"; while (n--) { string temp = ""; for (int i = 0; i < str.size(); i++) { if (str..
[프로그래머스 C++] 미로 탈출
[프로그래머스 C++] 미로 탈출
2024.02.03[프로그래머스 C++] 미로 탈출 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 전략 너비우선탐색 BFS 레버(L)를 먼저 찾은 후에 탈출구(E)를 찾아야 한다. 레버(L)를 찾는 BFS 수행 주의할 점: 이 때 탈출구를 지나칠 수 있다. 탈출구를 지나도 밖에 나가 끝나지 않고 그냥 지나친 시간만 카운팅한다. 방문 체크 초기화 fill(ch.begin(), ch.end(), vector(c, 0)); 탈출구(E)를 찾는 BFS 수행 주..
[프로그래머스 C++] 테이블 해시 함수
[프로그래머스 C++] 테이블 해시 함수
2024.02.02[프로그래머스 C++] 테이블 해시 함수 https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 정렬 누적 합계 비트 연산 정답 코드 #include #include #include #include using namespace std; // 행 번호, (문제에서 col로 주어진)특정 열의 값, 첫 번째 열의 값을 저장하는 구조체 struct Value { int rowNum; int colVal; int firstVal; // Value의 ..
[프로그래머스 C++] 거리두기 확인하기
[프로그래머스 C++] 거리두기 확인하기
2024.02.01[프로그래머스 C++] 거리두기 확인하기 https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 너비우선탐새 BFS 별 위치 확 정답 코드 #include #include #include #include using namespace std; int dirY[8] = { -1, 0, 1, 0, -1, -1, 1, 1 }; int dirX[8] = { 0, -1, 0, 1, -1, 1, -1, 1 }; vector solution(vector v..
[프로그래머스 C++] 가장 큰 정사각형 찾기
[프로그래머스 C++] 가장 큰 정사각형 찾기
2023.12.27[프로그래머스 C++] 가장 큰 정사각형 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 동적계획법 Dynamic Programming, DP 다른 방식으로 풀면 시간초과(효율성 테스트 실패)가 나온다. 정답 코드 #include using namespace std; int solution(vector board){ int row = board.size(); int col = board[0].size(); vector dp(row..
[프로그래머스 C++] 숫자 카드 나누기
[프로그래머스 C++] 숫자 카드 나누기
2023.12.21[프로그래머스 C++] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 최대 공약수 GCD 수학, 구현 정답코드 #include #include #include using namespace std; // 유클리드 호제법을 사용하여 GCD를 찾음 int gcd(int a, int b){ if (b == 0) return a; return gcd(b, a % b); } int solution(vector arrA, ve..
[프로그래머스 C++] 시소 짝꿍
[프로그래머스 C++] 시소 짝꿍
2023.12.08[프로그래머스 C++] 시소 짝꿍 https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 조합(Combination)과 해시맵(Hash Map) '조합'이란 n개의 원소 중에서 r개를 순서 없이 선택하는 것을 의미한다. 이 코드에서는 동일한 몸무게를 가진 사람들의 쌍을 찾기 위해 조합을 사용한다. '해시맵'이라는 데이터 구조를 사용했다. 해시맵은 키와 값을 한 쌍으로 저장하는 데이터 구조로, 여기서는 몸무게를 Key로, 그 몸무게를 가진 사..
[프로그래머스 C++] 배달
[프로그래머스 C++] 배달
2023.12.07[프로그래머스 C++] 배달 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 Dijkstra 다익스트라 알고리즘 (최단경로 알고리즘) 다익스트라(Dijkstra) 알고리즘은 그래프에서 한 노드에서 다른 모든 노드까지의 최단 경로를 찾는 알고리즘이다. 이 알고리즘은 가중치가 음수인 간선이 없는 그래프에서만 사용할 수 있\다. 다익스트라 알고리즘 출발 노드를 설정 pQ.push(Edge(1,0)) 출발 노드를 기준으로 그래프의 모든 노드의..
[프로그래머스 C++] 행렬 테두리 회전하기
[프로그래머스 C++] 행렬 테두리 회전하기
2023.12.06[프로그래머스 C++] 행렬 테두리 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 구현, 브루트 포스 Brute Force 행렬 회전, 시뮬레이션 정답 코드 #include #include using namespace std; vector v; vector answer; void Rotate(int x1, int y1, int x2, int y2, int r, int c) { int minNum = 2147000000; ve..
[프로그래머스 C++] 줄 서는 방법
[프로그래머스 C++] 줄 서는 방법
2023.11.29[프로그래머스 C++] 줄 서는 방법 https://school.programmers.co.kr/learn/courses/30/lessons/12936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결방안 순열 Permutation, 조합 Combination 처음 시도한 코드 - 테스트 케이스 모두 통과. 효율성 테스트 시간 초과 #include #include using namespace std; vector answer, temp; int ch[21]; int cnt; void Combination(int idx, const int& n, cons..
[프로그래머스 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..