Old

    백준 2193번 이친수 // C++

    백준 2193번 이친수 // C++

    문제 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 출력 첫째 줄에 N자리 이친수의 개수를 출력한다. 풀이 길이가 N인 이친수가 생성되는 규칙은..

    백준 11057번 오르막 수 // C++

    백준 11057번 오르막 수 // C++

    문제 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N (1 ≤ N ≤ 1,000)이 주어진다. 출력 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. 풀이 DP 문제로, 길이가 N이며 시작이 M인 오르막 수의 개수를 구하는 점화식을 세워 해결하면 된다. 구하고자 하는 오르막 수의 개수는 길이가 N-1이며, 시작이 M~9까지인 오르막 수의 개수의 합과 같다. 코드..

    백준 1890번 점프 // C++

    백준 1890번 점프 // C++

    문제 점프 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래로 가야 한다. 한 번 점프를 할 때, 방향을 바꾸면 안 된다. 즉, 한 칸에서 오른쪽으로 점프를 하거나, 아래로 점프를 하는 두 경우만 존재한다. 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 이동할 수 있는 경로의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 ..

    백준 11053번 가장 긴 증가하는 부분 수열 // C++

    백준 11053번 가장 긴 증가하는 부분 수열 // C++

    문제 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 풀이 동적 계획법(Dynamic Programming)을 사용하는 문제이다. dp[i]의 값은 num[i]을 가장 큰 수로 가지는 가장 긴 증가하는 부분 수열의 길이를 나..

    백준 16953번 A→B // C++

    백준 16953번 A→B // C++

    문제 A → B 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 입력 첫째 줄에 A, B (1 ≤ A < B ≤ 10^9)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 풀이 bfs 방식의 탐색을 통하여, A가 B가 될 수 있는지 확인한다. 해당 숫자를 작게 만드는 연산은 없기 때문에, 연산 결과가 B보다 큰 경우에는 탐색을 하지 않아도 된다. 1을 가장 오른쪽에 추가하는 연산은 (해당 수 * 10) + 1이다. 또한, B의 최대 값이 10^9인데 임의의 수 X*10가 int 범위를 벗어나는 경우..

    백준 9205번 맥주 마시면서 걸어가기 // C++

    백준 9205번 맥주 마시면서 걸어가기 // C++

    문제 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 상근이의 집에서 페스티벌이 열리는 곳은 매우 먼 거리이다. 따라서, 맥주를 더 구매해야 할 수도 있다. 미리 인터넷으로 조사를 해보니 다행히도 맥주를 파는 편의점이 있다. 편의점에 들렸을 때, 빈 병은 버리고 새 맥주 병을 살 수 있다. 하지만, 박스에 들어있는 맥주는 20병을 넘을 수 없다. 편의점, 상근이네 집, 펜타포트 락 페스티벌의 좌표가 주어진다. 상근이와 친구들이 행복하게 페스..

    백준 1991번 트리 순회 // C++

    백준 1991번 트리 순회 // C++

    문제 트리 순회 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례..

    HTML 태그

    HTML 태그

    HTML의 버전에 따라 새로운 태그가 생기기도 하고 없어지기도 함 제목과 단락 요소 HEADING 태그 Hello 문서 내에 제목을 표현하기 위해서 사용 제목의 레벨에 따라 h1 ~ h6 까지 존재 숫자가 낮을 수록 큰 제목을 의미 Paragraph 태그, Linebreak 태그 첫번째 단락 두번째 단락 두번째 단락 : 단락을 나타내는 태그 : 줄바꿈을 나타내는 태그로, HTML에서는 두 개 이상의 공백을 무시하기 때문에 줄바꿈을 하기 위해 사용, 닫기 태그와 내용이 존재하지 않는 빈 태그 텍스트를 꾸며주는 요소 Bold Italic Underline Strike : 글자를 굵게 표시 : 글자를 이탤릭체로 표시 : 글자에 밑줄을 표시 : 글자에 중간선을 표시 앵커 요소 네이버 링크를 생성하는 태그 a태그..