N에서 1을 뺍니다.N을 K로 나눕니다.첫째 줄에 N(2<=N<=100,000)과 K(2<=K<100,000)가 공백으로 구분되며 각각 자연수로 주어진다. 이때 입력으로 주어지는 N은 항상 K보다 크거나 같다.첫째 줄에 N이 1이 될 때까지 1번
문제 링크: https://www.acmicpc.net/problem/13305내가 처음 접근한 방법은 min(cost)로 최초값을 구한 뒤 반복문을 거쳐min(cost)를 만날 때 까지 거리만큼만 곱해주는 방법을 생각했는데그냥 첫 번째 지역은 무조건 지나야하
입력받은 리스트를 하나는 오름차순 정렬, 하나는 내림차순 정렬을 한 뒤반복문을 통해 두 리스트를 순서대로 더해주고 새로운 배열에 넣어서그 배열의 최소값을 출력해 주면 된다.처음엔 li를 오름차순 정렬하고, li를 res에 넣고res.sort(reverse=True)했는
처음엔 이중 for문으로 하나씩 찾아가면서 푸는 방식을 생각했는데 너무 코드가 너무 복잡해졌다. 찾아보니 훨씬 간단한 방식이 있었다.i를 arr\[i-1]로 빼주고 절대값을 씌워 그 값을 cnt에 더해주면 된다.그리디 알고리즘이 방법을 알면 쉽지만 간단한 방법을 한번에
https://www.acmicpc.net/problem/1459처음엔 세 가지 방식을 if문 여러개를 묶어 풀어보려 했는데 코드가 너무 지저분해 진다는것을 느끼고 세 가지 방식을 각각 result1, 2, 3 에 넣은뒤 min함수를 활용해 최소시간을 구했다.
https://www.acmicpc.net/problem/11501첫 날부터 그 다음날을 하나씩 비교하려면 마지막 날까지 비교해야 되기 때문에 굉장히 복잡해 진다. 그래서 마지막날 부터 역순으로 반복하면서 다음날과 차이를 비교하고그 다음날이 더 크면 값을 교체
https://www.acmicpc.net/problem/1543문자열을 끊어가며 같은 문자의 개수를 세는 문제이다.반복문을 통해 하나하나 접근해 가는 방식도 있지만split함수를 활용하면 간단히 풀 수 있는 문제였다.
https://www.acmicpc.net/problem/2885 Solution 배운점 6개를 상근이가 먹으려면 8개짜리의 초콜릿을 구매해야 하고, 8개는 (4, 4)로 쪼개지기 때문에 한번 더 쪼개서 (2, 2, 2, 2)로 나눠야 한다. 그럼 상근이가 6개를
https://www.acmicpc.net/problem/1541풀이 방식은 먼저, '-'를 기준으로 나누어 값을 저장하고 '+'를 기준으로 나누어 값을 더 한뒤 arr리스트에 값을 저장한다.그리고 0번째 값은 +부터 시작이기 때문에 0번째 값을 기준으로 1부
https://www.acmicpc.net/problem/1931정렬만 잘 하면 간단하게 풀리는 문제였다. 처음엔이렇게 정렬하였더니 첫줄은 무시되고 두번째 줄만 적용된 정렬이 만들어졌다.그래서 한번에 정렬하는 방법을 찾아보니key에 튜플로 여러 인자를 주면 해
https://www.acmicpc.net/problem/2331이 문제는 주어진 대로 풀면돼서 문제 자체의 이해는 매우 쉬웠지만풀이방식이 익숙하지않은 나한테는 풀이방식을 보고도 이해하는데 시간이 오래걸렸다.처음 a를 리스트로 만들어 nums에 넣는 것과 fo
https://www.acmicpc.net/problem/2583풀이는1\. 배열안에 m \* n 크기의 2차원 배열을 만들고 0으로 초기화.2\. 모눈종이 안의 직사각형영역에 1을 채운다.3\. (0, 0) 부터 bfs를 돌며 0인 분리된 부분의 크기를 구해
https://www.acmicpc.net/problem/1389이 문제는 배열로 1부터 n까지 돌며 방문체크를 위한 리스트를 반복해서 생성해 주고방문하지 않았으면 bfs를 실행하여 result에 연결되는 단계들의 합을 넣어주는 방식으로 풀이 되었다.처음 문제
https://www.acmicpc.net/problem/2667이 문제는 기본적인 그래프 탐색 문제로 시작점인 (0, 0)을 기준으로 이중 for문을 통해 반복하며 다 방문하고 값이 1일 경우 0으로 바꿔가면 이어진 1의 값이 없어질 때 까지 +1 해 준다.
https://www.acmicpc.net/problem/2468가장먼저 비가 얼마나 올지 모르기 때문에 최대 비의 양을 찾아 0부터 최고높이를 찾고 최고높이까지 오면 안전구역이 없기 때문에 최고높이 -1까지 계산한다.그러고 방문처리를 해 주는데, 0 부터 최
https://www.acmicpc.net/problem/5014일단 풀이는 방문을 체크할 visited와 눌러야할 버튼수를 계산할 count를 만들어주고bfs알고리즘을 통해 풀이하였다.헷갈렸던 점은 for i in (x+U, x-D) 이 부분인데 예를들어 (
https://www.acmicpc.net/problem/5014 Solution 배운점 지난번 풀었던 스타링크문제와 유사해서 같은 방식으로 풀었더니 틀렸다고 나왔다. https://www.acmicpc.net/problem/5014 스타링크 문제와 차이점이 존재
https://www.acmicpc.net/problem/1303이 문제가 기본 bfs/dfs문제심화된 점리스트 안이 0 or 1에서 문자(W, B)로 바뀐것기존엔 1을 0으로 바꿔가는 식으로 방문처리 해 줬지만 따로 처리해야함W인 경우, B인경우 두 가지경우
https://www.acmicpc.net/problem/1743기존의 bfs/dfs문제들과 다른점은 크게 없었지만, 범위를 잘 봐야된다.N, M, K의 범위를 제대로 알아야 문제의 조건을 정확히 설정할 수 있다.그래프는 (0, 0)부터 시작인데 문제의 범위는
https://www.acmicpc.net/problem/7569먼저 이 문제는 2차원 토마토이 문제와 같은 유형이라 쉽게 풀릴줄 알았다.이 문제는 3차원으로 풀이되어야 한다는 점만 달랐다.하지만 3차원문제는 처음 풀이해봐서 리스트에 담을 때 부터 쉽지않았다.
https://www.acmicpc.net/problem/1245오랜만에 DFS로 문제를 풀었다.이 문제는 대각선까지 포함하여 총 8방향을 확인해야 하고봉우리 체크를 위해 Boolean형태의 trigger를 사용해서 True면 cnt += 1해 주었다.조건만
https://www.acmicpc.net/problem/11559문제풀이를 간단히 글로 작성해 보면1\. bfs 함수를 통해 4개이상 같은 글자가 붙어있는 영역을 찾고2\. delete 함수를 통해 그 부분을 삭제하고3\. down 함수를 통해 삭제된 부분
https://www.acmicpc.net/problem/9205이 문제는 집 위치를 기준으로 페스티벌 좌표와 편의점들의 좌표를 절대값을 나타내는 abs를 이용해 풀면 되는 문제이다.처음에 입력받는 과정만 잘 작성한다면 쉽게 풀리는 문제이다.가장처음 편의점을
https://www.acmicpc.net/problem/2785풀이를 정리하자면chain리스트를 오름차순 정렬 해 준다사용한 체인의 개수인 cnt와 인덱스 번호인 x를 초기화\[cnt를 1로 초기화한 이유는 체인 한개당 두개의 체인을 연결할 수 있기때문] w
https://www.acmicpc.net/problem/2785chain리스트를 오름차순 정렬cnt와 x를 초기화\[cnt를 1로 초기화한 이유는 고리하나당 2개를 연결할 수 있기 때문]0번째 인덱스부터 체인개수 하나 제거사용한 체인개수 증가만약 \[x]번째
https://www.acmicpc.net/problem/1461이 문제에서 가장 먼저 알아야 할 점은 음수와 양수를 따로 나누어 계산한다는 점이다.left에 음수를 넣고, rifhgt에 양수를 넣고 가장 먼 거리를 제외한 좌표부터책을 놔두고 오면 된다.책은
https://www.acmicpc.net/problem/1316오랜만에 구현문제를 풀어봤는데 어려운 문제는 아니었지만 푸는 방식이 기억이 나지 않아 오래걸려 정리 해 본다.1\. 먼저 현재 단어와 그 다음 단어를 비교하기 위해 for 문을 len(word)-
https://www.acmicpc.net/problem/20546준현주식수를 계산할 때 꼭 +=을 해 주어야 한다.이유는 갖고있는 현금보다 가격이 큰 경우 0을 더해주면 다음으로 넘어갈 수 있기 때문이다.성민이의 경우 arr 리스트를 따로 만들어 주어 3번연
https://school.programmers.co.kr/learn/courses/30/lessons/178871이 문제는 딕셔너리를 사용해야 쉽게 풀수있는 문제이다.먼저 딕셔너리를 하나 생성하고 이름 : index로 만들어 주었다.그 다음 부른 순서대로 반
https://school.programmers.co.kr/learn/courses/30/lessons/176963이번 문제는 직전에 푼 문제와 비슷한 유형으로 딕셔너리를 이용하여 풀이하는게 쉽다.함수가 많이 사용됐는데 먼저 zip함수는 두 개의 리스트를 서로
사용시 io패키지의 IOException클래스를 호출해야함.Java에선 데이터 입출력 기능을 다룰 때 예외 처리가 없다면 컴파일 에러가 발생한다.입출력 데이터중 print(), printf(), println()메서드에만 자체적으로 예외처리 되어있다. 사용시 util
Stack 클래스를 사용해 문제를 풀이하였고 처음엔 1, 2, 3, 1을 판별하기위해이런식으로 인데스값을 직접 넣어서 풀이해서 틀렸다.인덱스로 직접 접근하면 안되는 이유는 만약 inStack의 크기가 4가 넘어갈 경우 1, 2, 3, 1을 판별하기 위해서 뒤에서 부터
https://school.programmers.co.kr/learn/courses/30/lessons/138476예를들어 arr배열이 1, 3, 2, 5, 4, 5, 2, 3 이라면이중에서 각각의 숫자마다 몇개씩 존재하는지 알수있는방법처음엔 리스트에 담고 c
트리의 부모찾기노드의 크기 만큼 2차원 배열을 만들어 노드끼리 1을 넣어주어 간선을 표현하였다.하지만 결과는 메모리 초과..count 배열을 만들어 최상위 노드인 1부터 내려가며 바로바로 부모값을 count에 담아주는 방식으로 풀이했고, 방문처리는 방문하지않은 노드는
벽 부수고 이동하기아직 벽을 부순적 없다 -> visitedN0 = true 로 방문처리 + Queue 에 offer이미 벽을 부순 경우 -> visitedN1 = true 로 방문처리 + Queue 에 offer벽을 부순적 없는 상태에서 벽을 만날 경우만 체크아직
(지금의 상태가 다음으로 이어진다.)DP문제 푸는 순서1\. 구하려는 값을 DP 배열로 만든다!2\. 상태(N)을 만드는 방법을 생각1 = {1}2 = {1, 1}, {2}3 = {1, 1, 1}, {1, 2}, {2, 1}, {3}1을 만드는 경우의 수 12를 만드는