전체 글

전체 글

    플랫 라이너 (2017)

    죽음보다 더한 공포 공포는 어디서 오는 것일까? 죽음 이후에 오는 허무에 대한 거부 또는 두려움일까? 는 조금 생각이 다른 것 같다. 영화는 죽음을 아주 가까이 둔다. 의대생인 앨렌 페이지는 영화 초장부터 죽고(=임사체험) 싶어하는데, 그 이유는 -나중에 밝혀지지만- 죽음을 통해 죽어버린 동생과 만나기 위해서였다. 영화 초반, 죽음은 날아가버린 인연을 잡을 수 있는 동아줄이었다. 앨렌 페이지는 동생을 만났을 뿐만 아니라 다른 능력도 얻게 됐다. 죽음으로 인해 뇌가 활발히 활동해 자신이 가진 기억을 생생하게 기억할 수 있게 된 것이다. 10년 전에나 연주했던 피아노를 수준급으로 칠 수 있게 되었고, 한번 봤던 투약설명서는 한글자 한글자 생각이 났다. 다른 동료들은 그의 이런 능력이 탐났다. 일년에 한명씩 ..

    영화감독 숌

    https://www.acmicpc.net/problem/1436 #include #include #include #include using namespace std; // 종말의 수인지 판별해주는 함수 bool isEndWorld(int num) { int seq=0; string num_st = to_string(num); for (int i = 0; i < num_st.length(); i++) { if (num_st[i] == '6') seq++; else seq = 0; if (seq == 3) return true; } return false; } int main () { int N, answer; // N = 몇번째 종말의 수인지, answer = N번째 종말의 수 int count=0, i..

    리모컨

    https://www.acmicpc.net/problem/1107 #include #include #include using namespace std; vector isBroken(10, false); // 고장난 버튼을 알려주는 벡터 // 누를 수 있는 숫자인지 알려주는 함수 int canPush(int num) { int push = 0; while(true) { if (isBroken[num%10] == true) return 0; else { num /= 10; push++; } if (num == 0) return push; } } int main () { int answer=0; // 몇번 버튼을 눌렀는지 저장하는 변수 int N, M, temp; // N = 이동하려는 채널, M = 고장난 ..

    덩치

    https://www.acmicpc.net/problem/7568 #include #include #include using namespace std; int main () { vector kg, cm, rank; int N; cin >> N; // 초기화 kg.reserve(N); cm.reserve(N); rank.assign(N, 1); // 입력을 받는다. for (int i = 0; i > kg[i] >> cm[i]; } // 덩치의 순위를 구한다. // 키와 몸무게가 더 작으면 랭크를 1씩 더한다. // i -> 비교기준, j -> 비교 대상 for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { // 자기자신과는 ..

    분해합

    https://www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그 www.acmicpc.net #include #include #include using namespace std; int main () { int N, sum=0, n..

    카드의 합 구하기

    https://www.acmicpc.net/problem/2798 #include #include #include using namespace std; int main () { vector deck; // 카드 덱을 저장할 벡터 int N, M, temp; // N = 카드의 개수, M = 카드의 합 int i, j, k; // 반복 인수 int sum=0, top=-1; // sum = 일시적인 카드의 합, top = 여태까지 최고의 합 // 입력을 받는다. cin >> N >> M; deck.reserve(N); for (i=0; i > temp; deck.push_back(temp); } // bruteforce search for (i=0; i

    계단 오르기

    1. 재귀형 완전 탐색 #include #include using namespace std; vector tri; int N; int step (int value, int row, int col) { // 자기가 있는 곳까지의 값의 합을 가지고 시작한다. // 기저 사례 // 여기가 끝일 경우 -> 현재까지의 값을 리턴. if (row == N-1) return value; // 재귀 사례 // 바로 밑으로 가거나 오른쪽 밑 중에서 큰 값을 리턴한다. return max(step(value+tri[row+1][col], row+1, col), step(value+tri[row+1][col+1], row+1, col+1)); } int main () { int hi; cin >> N; /..

    그대로 출력하기

    https://www.acmicpc.net/problem/11718 문제 내용 입력 받은 대로 출력하는 프로그램을 작성하시오. 입력 최대 100줄로 이뤄져있는 문자열이 제시된다. 각 줄은 100글자를 넘지 않는다. 출력 입력받은 그대로 출력한다. 풀이 cin으로 입력값을 받고 입력값을 받을 때마다 eof를 검사한다. eof는 cin 버퍼에 내장되어 있다. 디버깅을 위해 EOF를 입력할 때는 window는 ctrl+Z, unix는 ctrl+D이다. 코드 #include #include using namespace std; int main(int argc, char* argv[]) { string buffer; while(!cin.eof()) { getline(cin, buffer); cout