알고리즘(51)
-
프로그래머스 N-Queen dfs backtracking C++
풀이 방법 '하나의 열 or 하나의 행에는 반드시 하나의 퀸만 놓을 수 있다' 라는 점을 통해 풀이하면 된다. int row[12] : 각각의 행에 몇번째 열이 매칭되는지 (퀸이 놓이는지) 를 나타낸다 void dfs(int rowNum){ if (rowNum==N){ Answer++; return; } for (int i=0;i
2023.10.24 -
프로그래머스 미로 탈출 C++
#include #include #include using namespace std; struct Maze { int x; int y; bool lever; }; int visited[101][101]; int dx[4] = { -1, 1, 0, 0 }; int dy[4] = { 0, 0, -1, 1 }; int solution(vector maps) { int answer = 0; int sx, sy; //find starting point int col = maps.size(); int row = maps[0].size(); for (int i = 0; i < col;i++) { for (int j = 0; j < row ;j++) { if (maps[i][j] == 'S') { sx = j, sy ..
2023.10.21 -
프로그래머스 카펫 C++
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 카펫의 가로 길이를 x, 세로 길이를 y라고 하자. x * y = brown + yellow (x-2) * (y-2) = yellow x>=y 문제에서 보면 위의 세 조건을 만족시켜야만한다. 그래서 각각의 조건을 만족시키는 x, y값을 for문을 통해서 x 값을 하나씩 증가시키면서 확인해보면 된다. 정답 코드는 아래와 같다 #include #include using namespace..
2023.10.20 -
프로그래머스 피로도 C++
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 dfs 문제이다. #include #include #include #include using namespace std; vector Dungeons; int visited[5001]; int Answer; void dfs(int total, int cnt){ if (cnt > Answer){ Answer=cnt; } for (int i=0;i= Dungeons[i][0] && visit..
2023.10.20 -
프로그래머스 모의고사 C++
시뮬레이션 문제이다. 테스트케이스 5, 7번에서 문제가 있었는데 max_val을 처리해주는 부분 (line 32, 33)에서 잘못 짠 부분이 있었다. max_val = max(ans1, ans2); max_val = max(ans2, ans3); 이런식으로 짰었는데 이렇게 하면 예전 값을 기억하지 못한다는 문제점이 있어서 이렇게 변경했다. max_val = max(ans1, ans2); max_val = max(max_val, ans3); #include #include #include #include using namespace std; vector p1 = { 1, 2, 3, 4, 5 }; vector p2 = { 2, 1, 2, 3, 2, 4, 2, 5 }; vector p3 = { 3, 3, 1,..
2023.10.19 -
프로그래머스 같은 숫자는 싫어 C++
그냥 쉬운 스택을 이용한 구현 문제이다. EASY #include #include #include #include using namespace std; queue s; vector solution(vector arr) { vector answer; for (int i = 0;i < arr.size();i++) { if (s.empty()) { s.push(arr[i]); } else { if (s.back() == arr[i]) { continue; } else { s.push(arr[i]); } } } while (!s.empty()) { answer.push_back(s.front()); s.pop(); } return answer; }
2023.10.19