본문 바로가기

전체 글

(118)
백준 17371 : 게리맨더링 c++ www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 후기 1. 각 도시별로 연결 여부를 확인하는게 제일 힘들었다. 2. 당연히 queue 써야되는건데 생각이 안나서 vector로 하려다가 쌩고생했다 3. 이렇게 구글링 안하고 기출문제 풀면 기분이 좋다 ㅎㅎ 풀이는 주석에 친절하게 적혀있지만 그래도 요약하자면 1. n명을 두팀으로 나누는건 '1~ 2/n'명을 1팀, 나머지를 2팀으로 하면된다 2. 조합을 써서 지역 나눈다 3. 지역들끼리 서로 연결이 잘 되어 있나 확인!! ( 팀 가능..
백준 17136 : 색종이 붙이기 C++ www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크�� www.acmicpc.net 후기 1. 처음에 큰 색종이부터 대입시키면서 했는데 안되길래 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ..
백준 1937 : 욕심쟁이 판다 c++ www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 풀이 1. 일단 기본적으로는 완전 탐색이지만 2. 만약 0이 아닌 값이 들어있으면 바로 리턴하는 DP방식! 3. 주위에 자기 값보다 큰 대나무 값이 있으면 '그 좌표의 DP 값 +1' 과 현재 '자기 DP 값' 비교!! #include #include #include using namespace std; int n; int map[501][501]; int dp[501][501] = { 0, }; in..
백준 10844 : 쉬운 계단 c++ www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 나는 왜이렇게 dp가 어려울까... #include #include #include using namespace std; int main() { int dp[101][10]; // 번째 , 0~9 int n; int sum=0; cin >> n; dp[1][0] = 0; for (int i = 1; i
프로그래머스 : 삼각 달팽이 level 2 C++ programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 풀이 1. 밖에서부터 안으로 채워가는 순서를 얌전히 따랐다 2. n의 크기, 밖에서부터 몇번째 겹인지, 젤 위 꼭지점의 index 이렇게 3개를 관리 3. while문 써서 입력쓰 #include #include using namespace std; vector solution(int n) { vector answer; vector v(n+1);//1~n까지 쓰게 int index=..
프로그래머스 : 짝지어 제거하기 level 2 C++ programmers.co.kr/learn/courses/30/lessons/12973?language=cpp 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr #include #include #include using namespace std; int solution(string s) { stack a; for (char i : s) if (a.empty() || a.top() != i) a.push(i); else a.pop(); return a.empty(); } 평소 vector랑 queue..
백준 17070 파이프 옮기기 1 c++ www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 그냥 시뮬레이션 기초 그 자체 #include #include #include using namespace std; int answer = 0; int map[20][20] = {0, }; int n; // first의 값이 똑같으면 가로! // second의 값이 똑같으면 세로 // 둘다 다르면 대각선 bool in_map(int r, int c) { if (r n || c n) re..
프로그래머스 : 스킬트리 level 2 C++ programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 1.주어진 testcase순서대로 2. 주어진 선행스킬순서에 있는 스킬이 나왔다 - 근데 앞선 선행 스킬을 안배운 상태면 flag =0으로 만듬 3. flag가 0이 아닌경우에만 answer+1 #include #include using namespace std; int solution(string skill, vector skill_trees) { int answer = 0; int flag = 1; int check = 0; for(int i = 0; i < skill_trees.size(); i++) //tc { check = 0;//스킬트리 확인..