
https://www.acmicpc.net/problem/13417from collections import dequeT = int(input()) for \_ in range(T): N = int(input()) card = list(map(

수도코드1\. 양수 N을 구성하는 숫자들을 섞어서 30의 배수가 되는 최댓값을 구해야한다2\. 30의 배수가 되려면 우선 양수 N에서 0이 없다면 30의 배수가 아니므로 -1을 출력하면 된다.3\. 0이 있다면 제일 오른쪽으로 우선 빼놓고 나머지 수들의 합이 3의 배수

수도코드1\. 동전의 가치들을 같이 넣은 후 내림차순으로 정렬한다2\. k원을 제일 높은 동전의 가치 금액부터 나눠보면서 몫이 0보다 크다면 count를 몫만큼 증가시켜준다

수도코드1\. 각각 돈을 인출하는데 시간이 나오는데 필요한 시간의 합의 최솟값을 구해야한다2\. 각각 필요한 시간들을 먼저 입력받은 다음 오름차순으로 정렬한다3\. 그런다음 각자가 기다리는 시간들을 리스트에 넣고 for문으로 더해준다문제링크

수도코드1\. 개수만큼 글자들을 입력받아서 list에 담는다2\. set을 통해 중복제거를 한다3\. sort로 정렬을 해준다 -> 알파벳 순서대로 / 문자열 길이 순으로4\. 답을 출력문제링크

문제링크

수도코드1\. 기존에는 그냥 (사각형 개수 \* 100) - 겹치는 부분으로 구할려고 했는데 이렇게하면 안 겹칠때도 그렇고 생각할 게 너무 많아서 복잡2\. 2차원 배열을 생성해줘서 전체 사각형을 돌면서 2차원 배열 값들을 1로 전부 저장해준다3\. 나중에는 2차원 배

동전은 2원짜리와 5원짜리밖에 없고 두 동전으로만 거스름돈을 줘야한다.최소한으로 주기 위해서는 5원짜리로 먼저 한번씩 나눠본다.만약 나누어 떨어진다면 5로 나눈 몫이 답이 된다.나누어 떨어지지 않는다면 2원짜리로 n을 빼주면서 5원짜리로 나누어질때까지 반복한다.문제링크

수도코드1\. 횟수를 따라 재귀를 반복하는데 잘 들어보게~물었어는 횟수만큼 반복한다2\. 단, 재귀함수가 뭔가요는 횟수 + 1만큼 반복하는걸로 보인다3\. 횟수에 따라 재귀를 반복하면서 i를 1씩 증가해주는데 n과 동일해지면 다른 문장을 출력한다문제링크

문제링크

수도코드1\. 2중 배열을 선언해서 문자열들을 넣어준다2\. 행의 길이는 고정적으로 5행이고 열은 최대 15열3\. 다시 2중 배열을 반복하면서 값이 0이면 건너뛰고 아니면 전부 붙여서 출력하도록문제링크

문제링크

백준 2606 문제 바로가기이번주 알고리즘 스터디에서는 DFS에 관한 문제들을 집중적으로 풀기 시작했다. 그렇기에 최대한 DFS 알고리즘을 이용해 문제를 풀어보았다.각 컴퓨터가 서로 연결되어 있기 때문에 각 컴퓨터마다 연결된 컴퓨터들을 서로 추가해줘야 한다. 처음에는

백준 2331 문제 바로가기dfs 알고리즘을 사용해서 풀었다. 우선, 각 자릿수를 p만큼 제곱하는 함수가 필요하다고 생각되어 문자열로 변환해서 for문을 통해 각 자릿수를 p만큼 다시 정수형으로 변환해 계산한 후 리턴하도록 했다. 예를 들면, 57을 문자열로 변환해 f

백준 10026 문제 바로가기굉장히 복잡하게 푼 것 같아서 조금 만족스럽지는 못하지만... 그래도 이해를 말끔히 해서 좀 홀가분하다!! 이 문제의 경우 색맹인 사람과 아닌 사람의 경우를 나눠서 출력을 하라고 한다.그래서 난 각 경우를 나눠서 dfs 함수를 만든 후 적용

백준 11724 문제 바로가기저번에 푼 백준 2606번 바이러스 문제와 좀 비슷해보여서 쉽게 푸나 싶었는데 시간 초과 + 런타임 에러 때문에 굉장히 애를 먹었다 ..시간초과는 input말고 sys로 받아주니 해결이 되었고 런타임 에러는 재귀호출 때문에 sys.setre

백준 6603 문제 바로가기dfs로 풀어야 하는 건 알았는데 생각보다 푸는데 오래 걸렸다 ... 백트래킹도 구글링을 통해서 알아보니깐 그래도 이해가 잘 된거같다! 6개가 되었을 경우 출력하고 맨 뒤의 수를 pop으로 제거하여 전 단계로 돌아가는 구조라고 이해했다. 그래

백준 2644 문제 바로가기1차로 제출한 코드였는데 처음에 떠올린 방법은 result에 탐색한 곳들을 전부 append로 넣어주고 b가 안에 없다면 -1을 출력하고 존재한다면 b의 인덱스 값을 출력하려고 코드를 짜봤는데 오답이었다... \-> 아직 이유는 명확하게 모르

백준 11725 문제 바로가기DFS를 적용하면 부모노드에서 자식 노드로 간다는 점을 생각해보면 될 거 같다! 2번노드부터 차례대로 부모노드를 출력시키는 문제인데, 이전에 풀었던 dfs문제에서는 visited를 통해 방문한 노드인지 판별했었다이번 문제에서는 방문했다면 v

백준 16173 문제 바로가기DFS로 탐색을 하면서 정사각형 구역 내의 수가 -1인 순간에 HaruHaru를 출력하고 exit()함수로 종료하도록 구현했다. 빠져나오지 않고 그대로 DFS함수를 실행하면서 True가 반환되면 도달해야하는 목적지로 가지 못한걸로 판단되어

백준 1260 문제 바로가기문제 사진이 조금 짤린 점 양해바랍니다! DFS,

백준 7576 문제 바로가기bfs를 이용해서 문제를 풀어봤다! 공식?느낌으로 queue를 사용할려고 하였고 deque를 안쓰면 시간복잡도 때문에 문제를 해결하지 못할 거 같았다.2차원 배열에 입력값들을 전부 넣어주고 익힌 토마토가 있는 좌표를 queue에 넣고 popl

백준 16466 문제 바로가기정렬을 사용해 풀 수 있는 문제다. 티켓 번호 5개를 4, 1, 2, 7, 8 이렇게 받았다면 1, 2, 4, 7, 8으로 정렬하고 for문으로 5개를 검사하는데 인덱스는 0부터 시작이므로 +1을 해주어서 1부터 5까지 값이 같은지 확인을

백준 6996 문제 바로가기정렬 알고리즘을 사용해 푸는 문제다. a, b 문자열을 입력받은 다음 정렬시켰을때 값이 같다면 are anagrams.를 출력하도록 하고, 같지 않다면 are NOT anagrams.를 출력하도록 했다.

백준 9095 문제 바로가기규칙을 찾아서 문제를 푸는 DP 문제다. 위 문제에서 찾은 규칙은 n이 1일 경우 결과값은 1개, n이 2일 경우 결과값은 2개, n이 3일 경우 결과값은 4개, n이 4일 경우 결과값은 7개, n이 5일 경우 결과값은 13개로 n이 3보다

백준 문제 바로가기각 연산에 따라 함수를 정의하고 실행되도록 하고 순서에 따라 실행될 수 있으니, 원래 graph를 바꿔주는 쪽으로 했다. 처음엔, n m 값이 3 4번 연산에서 바뀔 수 있는데 이 부분을 간과했어서 런타임에러가 엄청 났다.... 이 부분만 고려해서 코

백준 문제 바로가기간단한 dfs/bfs방식으로 푸는 문제다. 나는 우선 dfs로 풀었다. arr에 입력 리스트를 받아서 넣어주고 맨 앞에 0을 넣어줬는데 arr = 0 + list(map(int, input().split())) 이렇게도 표현해서 받을 수 있다는 점!!

백준 문제 바로가기입력 그래프를 탐색하면서 늑대나 양이 나온다면 좌표값을 함수안에 넣어준다.함수에서는 queue에 좌표를 넣어주고 늑대 or 양에 따라 개수를 늘려나가고 종료되면 그 수를 리턴하면서 최종 수를 늘려나간다.

문제 바로가기이 문제는 n개의 수열에서 n - 1개의 연산자를 수열 사이사이에 넣어서 그 중 가장 최댓값과 최솟값을 구하는 문제입니다. 처음에 문제를 보았을 때, permutation을 통해 가능한 연산자를 가져오고 최댓값과 최솟값을 구해서 출력해주어야겠다고 생각했습니

문제 바로가기탐색 노드로부터 8가지 방법으로 다른 노드들을 방문하는것을 반복하면서 도착해야하는 노드가 있다면 이동 횟수를 출력하고 while 반복을 멈춘다.노드의 범위가 문제에서 주어지기 때문에 범위안에 들고 방문을 하지 않은 노드라면 queue에 넣어주고 이동횟수를

문제 바로가기이 문제는 익은 토마토를 통해서 익지 않은 토마토를 바꿔주는 문제다. 이동할 수 있는 방법은 총 6가지가 있으므로 그에 따라 좌표를 바꿔주기 위해 direction을 설정해준다. 그런 다음, 익은 토마트들의 좌표값들을 queue에 넣어주고 하나씩 꺼내서 이

문제 바로가기먼저 num정보들을 넣은 리스트를 정렬한 후, 중복값도 제거하고 visited로 확인도 해주어야 한다. 1, 1이나 7, 7과 같은 값들이 출력되면 안되는걸로 보아서 재귀를 돌기 전에 값을 기억해둔 후, append하기 전에 i번째 인덱스의 값이 일치한다면

문제 바로가기이번 문제는 수열이 비내림차순이어야 한다고 한다. 그렇기 때문에 백트래킹을 걸어줄 때, 인덱스 값 + 1을 계속 해주면서 추가를 해주는데 중복은 없애서 출력해야 하기 때문에 값들을 check로 받아주면서 확인했다.

문제 바로가기이 문제는 백트래킹 + 조건에 맞는 값만 출력을 해줘야 하고, 문제에서의 조건은 자음 최소 1개 모음 최소2개를 포함해야 한다고 했다. 그래서, 출력을 하기 전 모음과 자음의 개수를 세어주고 자음은 문제에서 주어졌기 때문에 먼저 기존에 만든 다음 answe

문제 바로가기좌표값이 1인 x,y좌표를 큐에 넣고 그 값들로 값들이 0인 부분들을 bfs 함수 내에서 바꿔주면 된다. 그러고 난 후, graph 이차원 배열 내에서 최댓값을 구해주는데 -1을 해줘서 출력한다!!! 첫 시작값이 1이기 때문이다!bfs 함수내에서는 이동방향

문제 바로가기dfs와 bfs를 함께 써서 해결했다.먼저, 각 학생들을 전부 다 조합해보기 위해서 백트래킹을 통해 계속해서 만들어주고 문제의 조건에서 'S'가 최소한 4명 있어야 하므로 반대로 'Y'가 4명 이상이면 리턴하도록 가지치기를 하였고 그렇게 7명의 학생이 조합

문제 바로가기칠 수 있는 계란의 수는 백트래킹을 통해서 다 해보는데 그 전에 들고있는 계란이 깨진 상태라면 옆의 계란을 들어서 재귀를 실행하도록 한다. n과 depth가 같아진다면 깨진 계란의 수를 세어주기 위해 check함수를 호출해서 계란의 상태를 반복문을 통해 확

송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에

문제 정보

문제 바로가기단순 bfs와 dfs문제여서 구현을 해보았는데 bfs에서 뭔가 코드가 찝찝한 느낌?... while문을 돌면서도 for문으로 확인을 하는데 뭔가 맘에 안드는 코드... 다른 분들 코드를 참고하고 스터디에서 코드리뷰를 받아본 후에 피드백을 반영해서 다시 고쳐

문제 바로가기dfs와 bfs를 같이 써서 해결한 문제다. 이전에 파이썬으로 풀 때는 combinations를 이용해서 그냥 0인 좌표들중에 3개 뽑아서 돌리고 그랬지만 자바에서는 벽을 세우기 위해 dfs를 사용해서 재귀를 통해 좌표값들을 설정하고 바이러스를 퍼트리기 위

문제 바로가기이 문제에서는 bfs를 써야할 거 같다는 생각이 들어서 우선 bfs로 문제를 풀어보았다. 최소한의 횟수로 특정 좌표까지 가야하기 때문에 bfs로 큐 안에 넣어주면서 좌표값의 범위를 확인해준다. 이때, 이 문제에서 고민을 많이 했던 부분이 어떻게 횟수를 세는

문제 바로가기이 문제는 문제 이해를 하는데 너무 오래걸렸다.. 왜 도대체 안전영역이 5인가 4인가를 이해 못하다가 유튜브 영상을 봤는데 1분만에 이해가 되버렸다. 바로 코드를 작성해보니 dfs를 통해서 인접한 좌표가 범위내에 존재하고 물에 잠기지 않을 높이이면서 방문

문제 바로가기간단하게 dfs로 문제를 해결했다. 처음 컴퓨터 연결된 정보를 받을때 양방향 연결을 고려해서 2차원 배열에 각 서로 좌표끼리 1로 값을 넣어두고 dfs안에서는 방문 여부와 연결을 고려해서 재귀를 통해 count 횟수를 출력하면 된다.

문제 바로가기위 문제는 크루스칼 알고리즘을 사용하여 최소 신장 트리를 구하는 것이다. 처음 크루스칼 알고리즘 문제를 풀어보았기에 유튜브에서 강의를 들어보니 비용이 제일 낮은 순부터 연결을 하되 순환이 생기지 않도록 연결을 하는 것이 중요하다! 먼저 입력값을 전체로 받고

문제 바로가기처음 풀어보는 다익스트라 알고리즘 문제.. 우선 다익스트라 알고리즘에 대해서 먼저 알아본 후에 문제를 접근해야 구현 단계로 넘어갈 수 있었기에 유튜브에서 따로 조금 영상을 찾아봤습니다!다익스트라 알고리즘은 위 문제와 같이 시작 노드에서 다른 모든 노드까지

백준 17471 게리맨더링N개의 구역을 2개의 선거구로 나누기 위해 이 과정에서 부분집합을 사용한다.2개의 선거구가 나왔다면 두 선거구 모두 각 구역이 연결되어 있는지를 확인한다만약 두 선거구 모두 연결되어 있다면 구역별 인구를 더한 후, 차이를 계산해서 최솟값으로 정

백준 17281 야구공9명의 타선 정보를 먼저 정해야 하기 때문에 이 부분은 순열을 통해 해결해보자. 타선 정보가 정해졌다면 4번타자가 1번 선수일때의 경우에만 점수를 계산하도록 한다.점수 계산은 1~3루까지 주자가 있는지 확인하면서 타자가 친 경우에 따라 점수를 올려

백준 17135 캐슬 디펜스3명의 궁수를 5개의 열에 배치하기 위해 조합을 사용해서 모든 경우를 뽑아낸다.궁수가 배치된 조합별로 몬스터를 잡아주는데 사정거리 안에 들어있는지 확인해준다.적을 잡게 되면 카운트 +1씩 해주면서 최종적으로 최댓값을 답으로 출력시킨다. 일단

백준 17070 파이프 옮기기1(1, 2) 좌표부터 시작해서 시작은 오른쪽을 향한다. 향하고 있는 방향에 따라 회전할 수 있는 경우가 다르기에 x좌표, y좌표, 바라보는 방향을 클래스로 생성하여 큐에 넣어준다.큐에서 현재 좌표를 꺼내어서 회전할 수 있는지를 체크하고 회

✨ 문제 백준 17140 이차원 배열과 연산 🎈 접근 방식

백준 17144 미세먼지 안녕!먼저 미세먼지를 확산시킨다. 동시에 확산시키기 때문에 입력받으면서 미세먼지의 좌표를 따로 입력받고, 반복문을 돌리면서 상하좌우 탐색을 하며 가능한 조건인지 확인하며 확산시킨다.확산이 끝나면 공기청정기를 작동시켜서 숫자를 밀어주도록 한다.

백준 14891 톱니바퀴어떤 톱니바퀴를 어디로 회전시킬지 입력값에 따라서 좌측과 우측을 살펴줘야 한다. 좌측이든 우측이든 반복문으로 확인을 해주는데 만약 맞닿은 부분이 같다면 그 다음 톱니바퀴는 회전하지 않으므로 break를 통해 빠져나온다.몇번 톱니바퀴를 회전할지를

백준 2110 공유기 설치공유기 사이의 거리를 정하고 그에 따라 C개만큼 설치가 가능한지 확인해야 한다.이에, 이진 탐색을 활용하도록 생각했다.제일 최솟값은 1이 될 것이다. 같은 좌표에 공유기를 설치하는 일은 없기 때문이다. 최댓값은 제일 끝에 있는 집의 좌표에서 첫

백준 3055 탈출고슴도치가 상하좌우 4가지로 움직이고 BFS를 활용하여 풀 수 있다고 생각되었다.이때, 움직일 수 있는 조건 중 물이 퍼질 것으로 예상되는 좌표는 갈 수 없기에 물을 먼저 BFS로 퍼트려주고 고슴도치를 이동시키기로 한다.물에 대한 BFS와 고슴도치에