백트래킹백트래킹 함수의 매개변수로 L과 str을 준다. L은 depth이자 cnt를 의미하고 str은 현재까지 만들어진 문자열(숫자의 조합)을 나타낸다.expression의 종류에 따라 str의 마지막 요소와 다음에 넣을 숫자를 적절하게 비교하여 str에 더해나간다.모
그리디단어에서 위치한 알파벳들의 자릿수 합을 계산하고, 자릿수의 합 순으로 정렬한다. 자릿수의 합이 큰 알파벳부터 순차적으로 가능한 가장 큰 숫자를 대입한다."AAA", "BCD"일 때 111A + 100B + 10C + D 가되고순서대로 9,8,7,6 을 대입하면 최
테스트 케이스는 다 맞았는데 정답이 안돼서 다른 사람의 코드를 참고해서 풀었다.연산자의 개수만큼 백트래킹을 해서 값을 누적하는 방식을 사용했는데, 위 코드는 백트래킹으로 사용할 연산자를 누적하고 마지막에 값을 내는 방식이다.operObj 키 값에 따라 연산자가 주어지고
n/2개를 뽑는 조합을 만들고 start 팀으로, 이외의 것들은 link 팀으로 둔다.반복문을 이용해 능력치의 합을 구한다.값을 누적해가며 최소값을 구한다.
제너레이터 함수를 이용한 풀이제너레이터 함수의 반환 값이 이터러블 이기 때문에 for of를 사용 할 수 있다.
큰 수로 배열하나를 만들고 0로 초기화 한다.부분집합 알고리즘(dfs)로 부분집합의 합을 전부 구하고 배열의 해당 인덱스의 값을 1로 바꾼다.반복문으로 값이 0인 가장 작은 i를 리턴한다.
연산자 끼워넣기 문제에서 주어지는 연산자의 수가 들어난다.코드 자체는 바뀌는 것이 없으나 max, min값에는 변화가 생긴다.
문제 제한 사항 입출력 예 풀이
문제 제한 사항 입출력 예 풀이
백트래킹을 해야하는 것과 과정은 알겠으나 가지치기하는 코드를 이해하기가 여러워 다른 글을 참고했다. 우선 퀸의 움직임을 이해해야 한다. 퀸은 상, 하, 좌, 우, 대각선으로 무한정 이동이 가능하다. 퀀은 서로 다른 행과열에 위치해야 하므로, 행과 열 중 하나만 기준으로
양산형 bfs 문제인듯 하다. 정답률도 꽤나 높다.
벽을 세워야하는 조건이 따로 없기 때문에 모든 경우를 찾아줘야 한다. 벽을 3개씩 세워가며 bfs를 해줘야한다.
시간 초과를 해결하지 못했다. 확실한 건 아니지만 js의 고질적인 문제인 것 같다.돌이 3개라 visited 배열을 3차원 배열로 만들 필요는 없다. 두 돌의 개수가 정해지만 나머지의 개수는 자동으로 정해지기 때문이다.bfs를 끝내고 난 뒤 visited의 sum/3
복잡하긴 하나 기본 bfs와 비슷하다.물이 고여있는 위치를 따로 배열을 만들어 넣어둔다. 물이 퍼지는 함수를 만든다. 원리는 bfs와 비슷하지만 조금 다르다. 물이 퍼질 수 없는 좌표는 걸러주고 물로 바꾼다. 그리고 그 위치를 배열에 추가시킨다.bfs 함수에 다른 점이
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K
인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다.사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게
0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오.행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0)첫째 줄에
N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져 있는 전구는 켜지고, 켜져 있는 전구는
문제 한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다. 각 대학에서 제시하는 d와 p값
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.첫째 줄에 식이
길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를
백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.N
병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다.2칸 위로, 1칸 오른쪽1칸 위로, 2칸 오른쪽1칸 아래로, 2칸 오른쪽2칸 아래로, 1칸 오른쪽병든 나이트는 여행을
수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.
첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 위치의 번호가 차례로 주어진다. 위치의 번호는 500 이하의 자연수이고, 같은
N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을
뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다.주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까?게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임