일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 다이나믹프로그래밍
- C/C++
- Java
- binary search
- C++
- 머신러닝
- 딥러닝
- 알고리즘
- 라인플러스
- spring
- 프로그래밍언어론
- 시애틀
- Spring Framework
- 라인
- 스타벅스
- STL
- BFS
- 백준
- 모두를 위한 딥러닝
- 릿코드
- leetcode
- 벤쿠버
- dfs
- 스프링 프레임워크
- 백트래킹
- 프로그래머스
- Python
- 파이썬
- jvm
- DP
- Today
- Total
목록Algorithm/Backtracking (9)
케이스윔의 개발 블로그
문제로봇이 동서남북 4개의 방향 중에 하나를 선택해서 이동하는데 N번의 행동을 취한다. 같은 곳을 한 번보다 많이 이동하지 않을 때, 로봇의 이동 경로가 단순하다고 한다. 각 방향으로 이동할 확률이 주어질 때 로봇의 이동 경로가 단순할 확률을 구하는 프로그램을 작성하시오.문제 출처: 백준 온라인저지(https://www.acmicpc.net/problem/1405) 풀이같은 곳을 한 번보다 많이 이동하지 않는 이동경로 = visited 배열이 0인 곳만 방문하는 경우를 의미합니다. N은 14보다 작거나 같으므로 visited 배열을 만들기 위한 값을 생각해보면 동, 서, 남, 북쪽으로만 N번 이동할 수 있으므로 (2*N)*(2*N)의 크기가 필요합니다. 출발점은 N, N이라고 생각할 수 있습니다. 그 다..
문제개수 N이 주어지고 가능한 모든 N*(N+1)/2개의 구간의 합에 대한 부호가 주어질 때, 수열 N을 구하시오.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/1248) 풀이처음에 어렵다고 느껴서 헤맸던 문제입니다! N이라는 숫자가 주어지고 구간의 합의 모든 조합에 대한 +, -, 0가 주어질 때 이 모든 조건을 만족하는 수열을 구해야합니다. 처음에는 입력을 1차원 배열로 받다보니 i번째 자신에 대한 부호를 찾는 것도 몇번째에 위치하고 있는지 계산을 해야해서 복잡해졌습니다. 그래서 이 방법을 처음에 시도했다가 배열을 N*N으로 만들어서 첫째 줄에서는 N개를 사용, 두번째 줄에는 N-1개를 사용하도록 했습니다. 그렇게 하니 i번째 자리의 부호를 알기 위해서는 nu..
문제 정의알파벳으로 이루어진 N개의 단어가 수학문제가 들어오면, 각 알파벳을 숫자에 대응시켜 합을 구했을 때 가장 큰 합이 나오도록 만들어야 한다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/1339) 문제 풀이숫자는 0~9 까지 각 알파벳에 대응시킬 수 있으므로, 최대 대응을 시켜야하는 수는 10개의 알파벳이다.(입력자체도 모든 단어에 포함되어 있는 알파벳이 최대 10개이다.) 두줄에 걸쳐 입력되는 알파벳숫자들의 합이 최대가 되려면 일단 제일 앞자리에 있는 알파벳에 9,8,7... 순으로 큰 수를 대응시켜주면 된다. 문제는 하나의 알파벳이 두번 입력되어도 그 알파벳은 하나의 수로 대응되어야하니까 적절하게 대응시킬 수 있는 방법이 필요하다. 해결해야되는 부분들을..
문제 정의평소에 일반적으로 푸는 스도쿠와 같은 문제이다. 채워지지 않은 칸은 0으로 주어지면 모든 빈 칸이 채워진 스도쿠의 최종 모습을 출력하는 문제이다. 스도쿠에서 각각 세로와 가로 한줄씩은 1~9의 숫자가 하나씩 들어가야하고, 3*3의 칸으로 나눈 총 9개의 3*3 정사각형 안에서도 1~9의 숫자는 하나씩 존재해야한다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/2580) 문제 풀이빈칸이 발견될 때마다 백트래킹 함수를 호출해서 빈칸에 알맞는 숫자를 찾아야 한다. 만족해야하는 조건은 3가지이므로 차례대로 체크를 하고 만약 조건에 만족하지 못할경우 다시 돌아가서 새로운 수를 채워넣고 다시 조건을 검사한다. 즉, 채우는 수는 1~9 로 차례대로 시도하고 가로, 세..
문제숫자 1, 2, 3으로만 이루어지는 수열이 있다. 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다.다음은 나쁜 수열의 예이다.3332121323123123213다음은 좋은 수열의 예이다.232321231232123길이가 N인 좋은 수열들을 N자리의 정수로 보아 그중 가장 작은 수를 나타내는 수열을 구하는 프로그램을 작성하라. 예를 들면, 1213121과 2123212는 모두 좋은 수열이지만 그 중에서 작은 수를 나타내는 수열 1213121이다. 입력과 출력 입력은 숫자 N하나로 이루어진다. (1
문제세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다.말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다.좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/1987) 입력과 출력첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1= C) continue; ..
문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 및 출력첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력은 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 문제 출처 : 백준 온라인 저지 https://www.acmicpc.net/problem/9663 풀이퀸을 놓을 때 규칙은 같은 가로줄, 세로줄에 놓을 수 없고 대각선으로 같은 줄이어도 놓을 수 없다. 퀸을 하나씩 놓아보며 모든 경우를 찾아보고 만약 놓을 수 없을 경우는 바로 다른 곳에 놓도록 한다. 제일 윗줄부터 차례대로 놓고, 놓은 퀸들은 배열에 저장해두고, 놓을 수 없는 경우 돌아가며 새로 퀸을..
문제바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다.암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다.새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식, 영식 형제는 조교들의 방에 침투하기..