본문 바로가기

전체 글361

[BOJ]18808번: 스티커 붙이기 바킹독님 모의고사 시뮬레이션 문제입니다. 시간복잡도는 O(4*N*M*K*R*C)을 해도 64,000,000 이므로 제한시간 내에 들어올 수 있습니다. 주어진 상황을 얼마나 잘 나누어 구현했느냐가 중요한 문제입니다. 2020. 5. 2.
[2019 카카오 기출] 길 찾기 게임 위 출처를 보고 해결한 문제입니다. 이진트리를 만드는 방법을 비교적 간단하게 구현하신 거 같아서 가져왔습니다. 해결 방법은 아래와 같겠지요. 1. 주어진 노드를 Y축 내림차순, X축 오름차순으로 정렬 2. 이진트리 생성 3. preOrder && postOrder 주어진 데이터에 대해 이진트리 생성하는 것이 이 문제의 전부라고 생각합니다. 자세한 주석은 코드에 달아놓았습니다. 2020. 5. 1.
[C++] 문자열 줄단위로 받기 위 출처 내용을 바탕으로 개인공부 목적으로 작성하였습니다. Input 4 2 3 4 5 6 8 2 4 1 2 3 1 1 2 3 1 1 4 *첫번째 값은 줄 수 N, 그다음부터 N개의 줄에 랜덤한 갯수의 값들이 들어옵니다. 아래 코드에서 중요한 건, for문 진입이전에 나오는 getline 메소드. cin은 개행문자 전까지 읽고, 처음에 나오는 개행문자는 무시합니다. getline은 개행문자까지 읽고, 처음에 나오는 개행문자도 읽습니다. 그러므로 cin으로 처음값 N을 읽고 난 후 개행문자를 읽어주는 getline을 한 번 호출해줘야 합니다. int N; cin >> N; string line; //cin은 개행문자 전까지 읽고 처음에 나오는 개행문자는 무시합니다. //getline은 개행문자까지 읽고, .. 2020. 4. 30.
[BOJ]15655번: N과 M(6) 조합 문제입니다. combination(idx + 1, cnt) combination(idx + 1, cnt + 1) 위 코드 두 줄의 의미가 가장 중요합니다. idx: 배열의 숫자 중 탐색을 수행할 인덱스 번호 cnt: N개 중 현재 몇 개를 뽑았는지 조합은 특정 숫자에 대해 뽑을지/말지를 결정합니다. 그러므로 매 깊이마다 최대 2개로 뻗어나갈 수 있습니다. 이를 통해 특정 숫자 num[idx]를 뽑을 수 있다면, 특정 숫자를 뽑는 combination(idx+1,cnt+1)과 뽑지 않는 combination(idx+1,cnt)을 모두 수행하고, 특정 숫자가 이미 사용되어 뽑을 수 없다면 뽑지 않는 combination(idx+1,cnt)만 수행해줍니다. 2020. 3. 6.