본문 바로가기

CPP

(50)
[코드트리] Backtracking - 백트래킹 / 재귀 연습문제 백트래킹. 대충 알고있는건 백트래킹 == 완전탐색(모든 경우의 수를 무식하게 찾기)에서 가지치기로 효율 높임 이정도라서..ㅋㅋ 연습문제도 풀어봐야겠다 대부분의 알고리즘 문제들은 원하는 모든 조합을 만들어 그 중 문제에서 원하는 답을 고르는 식으로 해결이 가능합니다. 만약 n 제한이 작고, 모든 조합을 만드는 데 걸리는 시간이 문제에서 주어진 제한 시간보다 더 작다면, 항상 모든 조합을 다 만들어 보는 것이 가독성 측면에서나, 코드를 작성하는 입장에서 가장 좋다고 할 수 있을 것입니다. 다만, (1, 1, 1, 1, 1), (1, 1, 1, 1, 2), (1, 1, 1, 1, 3), (1, 1, 1, 2, 1), (1, 1, 1, 2, 2), .. 등 여러 가능한 순열과 조합을 만드는 것을 for문 만을 ..
[C++/백준] 1260 : DFS와 BFS 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. ..
[C++/백준] 1149 : RGB 거리 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 ..
[C++/백준] 9095 : 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 백준 실버 3 티어. DP 문제였고 DP는 점화식을 찾는게 항상 어렵다; 1은 1로만 표현 가능. (1) 2는 1+1, 2로 표현 가능. (2) 3은 1+ (2의 경우의 수)..
[C++/백준] 1924 : 2007년 문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 백준 열심히 해야지..... 이 문제는 날짜 요일 맞추는 구현? DP? 문제이다 사실 난이도도 쉬워서 딱히 분류의 의미도 없긴함 브론즈 1티어 문제이다 1월 입력은 따로 빼놨다가 나중에 왜 이렇게 했지...?..
[PGS] Lv.0 (코딩테스트 입문) 10일차 문제 ✍🏻 벡터 numbers 와 tmp 연결하기 (합치기) → numbers.insert( numbers.end(), tmp.begin(), tmp.end() ) ✍🏻 벡터의 첫 원소 삭제하기 → v.erase( v.begin() ) 프로그래머스 레벨 0 조건문, 배열, 수학, 시뮬레이션 점의 위치 구하기 int solution(vector dot) { if(dot[0]>0 && dot[1]>0) return 1; if(dot[0]0) return 2; if(dot[0]
[ICT인턴십] ict internship 코딩테스트 후기 지원서 넣고 서류마감 며칠 뒤, 이메일로 코테 링크가 날아왔다. 처음에 헤멨는데 그냥 이메일 내용 중에 Start Test 버튼 누르면 바로 응시할 수 있는거였다! 그것도 모르고...해커랭크 회원가입 할 뻔.ㅎㅎ 그리고 생각보다..어려웠다 총 5문제, 응시 시간은 6시간인데 난 3시간 정도만 했다. 일단 5문제 다 건드려보긴 했는데, 테스트 케이스가 엄청 많고 방대해서 모든 테스트케이스를 통과하지 못한 문제도 있음. 뭐 어쨌든 이 글 보러오신 분들은 문제가 궁금해서 오셨을테니! 몇문제 보여드려야죠 😎 참고로 문제가 모두 영어고, 문제 복사를 못해서.. 번역기에 넣고 돌리지도 못한다. 폰으로 사진찍어서 파파고 이미지번역하는 방법이 있긴 함 그리고 백준처럼 입출력 모두 구현하는 게 아니라, 프로그래머스 문제..
[알고리즘] Greedy algorithm - 이집트 나눗셈(cpp) 문제 이집트 나눗셈을 하는 프로그램을 작성하시오. 입력 p/q를 나타내는 두 정수 p, q가 사이에 공백을 하나 두고 주어진다. p는 1 이상 1,000 이하, q는 p+1 이상 2,000 이하인 정수 출력 수업 시간에 배운 이집트 나눗셈의 결과로 몇 개의 분수가 나오는지 출력한다. 예를 들어, 5/6은 1/2 + 1/3이므로 2개의 분수가 필요하다. 예제 입력 1 5 6 예제 출력 1 2 예제 입력 2 19 20 예제 출력 2 4 알고리즘 수업의 첫 과제였다. 이집트 나눗셈이란, 유리수 p/q가 주어지면 분자가 1인 분수들의 합으로 p/q를 표현하는 것이다. 예) 5/6 = 1/2 + 1/3 , 3/4 = 1/2 + 1/4 욕심쟁이 기법, 흔히 Greedy 알고리즘이라고 부르는 기법을 사용하여 풀이할 ..

728x90