본문 바로가기

Computer Science&Engineering/코딩테스트

(59)
[백준 12865] 평범한 배낭 C++ # 문제링크 www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 오랜만에 게시글이다.. 요즘 오전 9시부터 저녁 9~10시까지 공부하느라 정신이 없다 ㅠㅠ DP를 더 공부해보려고 찾은 문제이다. 배낭 문제를 풀면서 DP에 감을 잡은 것 같다. 배낭 문제는 유명한 문제더라! 평소 자주 참고하는 얍문님의 블로그를 보고 공부했다. 설명 천재이신거 같다. DP 의 포인트는 완전 탐색 중에 제일 좋은 케이..
[백준 10835] 카드게임 DFS, DP 풀이.. # 문제링크 www.acmicpc.net/problem/10835 10835번: 카드게임 첫 줄에는 한 더미의 카드의 개수를 나타내는 자연수 N(1 ≤ N ≤ 2,000)이 주어진다. 다음 줄에는 왼쪽 더미의 카드에 적힌 정수 A(1 ≤ A ≤ 2,000)가 카드 순서대로 N개 주어진다. 그 다음 줄에는 오 www.acmicpc.net DFS 로 모든 경우의 수를 돌려보려고 했는데, 시간 초과가 나서 DP로 풀었습니다. # 제출 코드 // DFS #include using namespace std; int N; int left_card[2000]; int right_card[2000]; void Input() { cin >> N; for (int i = 0; i > left_c..
[정올 2604] 그릇 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1865&sca=2050 JUNGOL www.jungol.co.kr Beginner_Coder 에 문자열 문제이다. 맨 처음에는 높이 10을 주고, 다음 글자부터는 이전거랑 비교해서 같으면 5더하기, 다르면 10 더하기를 해주었다. # 제출 코드 #include using namespace std; int main() { string s; cin >> s; int ans = 10; for (int i = 1; i < s.length(); i++) { if (s[i] == s[i - 1]) ans += 5; else ans += 10; } cout
[정올 2514] 문자열 찾기 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1775&sca=2050 JUNGOL www.jungol.co.kr 주어진 문자열에서 연속 3개의 문자가 IOI 이거나 KOI인 문자열이 각각 몇 개 있는지 찾는 프로그램을 작성하라. 문자열은 알파벳의 대문자로만 이루어진다. 예를 들어 "KOIOIOI"라는 문자열은 KOI 1개 , IOI 2개가 포함되어있다. -> string 으로 받아서, 0번째 글자부터 s.length() - 2 까지 돌면서 KOI 와 IOI를 찾았습니다. # 제출 코드 #include using namespace std; int main() { string s; cin >> s; int K = 0, I = 0; for (int i = ..
[정올 1516] 단어 세기 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=788&sca=2050 JUNGOL www.jungol.co.kr Beginner_Coder 에 문자열 종류 문제다. 문장을 입력받아서 문장에 나온 단어 갯수를 출력하는 문제. C언어 할 때와 달리 C++에는 string 형이 있어서 좀 더 편하게 구현할 수 있었던 거 같다. 문장을 단어로 나눌 때에는 strtok 을 사용했는데, 이거 사용법 좀 외워야겠다. Beginner_Coder 문제인데 삽질 좀 했다 .. - main : 한 줄로 입력받기 cin.getline(buffer, maxsize), END 읽으면 종료- count_word : 문장을 단어로 나눠서 단어 수 세기- find_word : 이미 ..
[백준 2659] 십자카드 문제 C++ 풀이 # 문제링크 www.acmicpc.net/problem/2659 2659번: 십자카드 문제 입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다. www.acmicpc.net 모든 시계수를 만들어 visited 에 체크하고, 주어진 수 까지 앞에 몇개가 있었는지 확인했습니다. 시계수를 만들 때 4중 for 문을 사용했는데 이렇게 하는 게 맞는지 모르겠네... 하면서 했습니다. 더 좋은 방법이 있을지도.. # 제출 코드 #include #include using namespace std; bool visited[10000]; int get_num(int a, int b, int c, int d) {..
[백준 2309] 일곱 난쟁이 # 문제링크 www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 아홉 난쟁이 중에 일곱 난쟁이의 키를 합해서 100이 되어야 하는 문제. 이중 for문으로 9 개 중에 2개를 골라도 되고, DFS를 사용해도 된다. # 제출 코드 // 이중 for 문 사용 코드 #include #include # define INF 0x7f using namespace std; int ki[10]; int sum; void Input() { for (int i = 0; i < 9; i++..
[백준 11004] K번째 수 # 문제링크 www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 정렬해서 K 번째 있는 수를 구해야 한다. C++의 STL에 sort 를 활용해서 배열을 완전히 정렬한 후 K번째 값을 출력하면 된다. 정렬해서 몇 번째에 있는 수를 알려주는 STL인 nth_element 함수가 있다. nth_element(시작, 찾고자하는 인덱스, 끝) 이렇게 넣어주면 된다. # 제출 코드 // sort 를 이용한 풀이 #include #include using namespace std; long long int a[5000001]..