전체 글69 [프로그래머스] 퍼즐 게임 챌린지 (Java) 0. 출처프로그래머스 퍼즐 게임 챌린지 문제입니다.1. 문제당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는 횟수가 바뀌게 됩니다. 현재 퍼즐의 난이도를 diff, 현재 퍼즐의 소요 시간을 time_cur, 이전 퍼즐의 소요 시간을time_prev, 당신의 숙련도를 level이라 하면, 게임은 다음과 같이 진행됩니다. - diff level 이면 퍼즐을 틀리지 않고 time_cur 만큼의 시간을 사용하여 해결합니다.- diff > level 이면, 퍼즐을 총 diff-level번 틀립니다. 퍼즐을 틀릴 때마다, time_cur 만큼의 시간을 사용하며, 추가로 time_prev.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 11. 30. [백준] 1027번 고층 건물 (Java) 0. 출처백준 1027번 문제입니다. 1. 문제세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)은 (i,0)부터 (i,높이)의 선분으로 나타낼 수 있다. 고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩이 되려면, 두 지붕을 잇는 선분이 A와 B를 제외한 다른 고층 빌딩을 지나거나 접하지 않아야 한다. 가장 많은 고층 빌딩이 보이는 빌딩을 구하고, 거기서 보이는 빌딩의 수를 출력하는 프로그램을 작성하시오.(1) 입력첫째 줄에 빌딩의 수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에 1번 빌딩부터 그 높이가 주어진다. 높이는 1,000,.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 5. 14. [백준] 1012번 유기농 배추 (Java) 0. 출처백준 1012번 문제입니다. 1. 문제차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다.한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 5. 14. [백준] 1010번 다리 놓기 (Java) 0. 출처백준 1010번 문제입니다. 1. 문제재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 .. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 5. 13. [백준] 17406번 배열 돌리기 4 (Java) 0. 출처백준 17406번 문제입니다. 1. 문제크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다.1 2 32 1 14 5 6배열은 회전 연산을 수행할 수 있다. 회전 연산은 세 정수 (r, c, s)로 이루어져 있고, 가장 왼쪽 윗 칸이 (r-s, c-s), 가장 오른쪽 아랫 칸이 (r+s, c+s)인 정사각형을 시계 방향으로 한 칸씩 돌린다는 의미이다. 배열의 칸 (r, c)는 r행 c열을 의미한다. 예를 들어, 배열 A의 크기가 6×6이고, 회전 연산이 (3, 4, 2)인 경우에는 아래 그림과 같이 회전하게 된다.A[1][.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 28. Springboot 프로젝트 SonarCloud로 정적 코드 분석하기 (+github actions) 본 포스트는 아래와 같은 버전 기준으로 작성되었습니다.Springboot 3.1.0java 171. 정적 코드 분석이란정적 코드 분석이란 단어 그대로 소스 코드를 실행하지 않고 정적으로 코드를 분석하는 것을 의미합니다. 소스 코드의 품질의 높이기 위해 잠재적인 버그나 코딩 컨벤션에 어긋난 부분을 찾는 것이죠!(1) 정적 코드 분석을 사용하는 이유정적 코드 분석을 사용하면 흔히 코드 스멜(code smell)이라고 불리는 문제들과 보안 취약점 등의 문제를 사전체 찾아낼 수 있습니다.잠재적으로 버그가 발생할 수도 있는 코드를 찾을 수 있다.코드 스타일(코딩 컨벤션) 위반 여부를 판단할 수 있다.오타를 찾아낼 수 있다.사용되지 않는 코드를 찾아낼 수 있다.잠재적인 보안 취약점을 발견할 수 있다. 2. 코드 품.. Spring 2024. 4. 27. [백준] 9935번 문자열 폭발 (Java) 0. 출처백준 9935번 문제입니다. 1. 문제상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다.폭발은 다음과 같은 과정으로 진행된다.문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다.새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다.폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다.상근이는 모든 폭발이 끝난 후에 어떤 문자열이 남는지 구해보려고 한다. 남아있는 문자가 없는 경우가 있다. 이때는 "FRULA"를 출력한다.폭발 문자열은 같은 문자를 두 개 이상 포함하지 않는다.(1) 입력첫째 줄에 문자열이 주어진다. 문자열의 길.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 27. [백준] 11660번 구간 합 구하기 5 (Java) 0. 출처백준 11660번 문제입니다. 1. 문제N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1234234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.(1) 입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 26. [SWEA] 1225 암호 생성기 (Java) 0. 출처SWEA 1225번 문제입니다. 1. 문제다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.8개의 숫자를 입력 받는다.첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.이와 같은 작업을 한 사이클이라 한다.숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.(1) 제약 사항주어지는 각 수는 integer 범위를 넘지 않는다. 마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.(2) 입력총 10개의 테스트 케이스가 주어진다. 각 .. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 24. [백준] 26215번 눈 치우기 (Java) 0. 출처백준 26215번 문제입니다. 1. 문제지난 밤 겨울 숲에는 눈이 많이 내렸다. 당신은 숲의 주민들을 위해 눈이 오지 않는 동안 모든 집 앞의 눈을 치우고자 한다. 당신은 1분에 한 번씩 두 집을 선택해서 두 집 앞의 눈을 각각 1만큼 치우거나, 한 집을 선택해서 그 집 앞의 눈을 1만큼 치울 수 있다. 모든 집 앞의 눈을 전부 치울 때까지 걸리는 최소 시간은 얼마일까?(1) 입력첫 줄에 집의 수를 의미하는 정수 N(1≤N≤100) 이 주어진다.다음 줄에는 각각의 집 앞에 쌓여 있는 눈의 양을 나타내는 정수 a(1≤a≤2000) 이 주어진다.(2) 출력모든 집 앞의 눈을 치우는 데 최소 몇 분이 걸리는지를 출력한다. 24시간(1440분)이 넘게 걸릴 경우 -1을 출력한다... Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 24. [백준] 11000번 강의실 배정 (Java) 0. 출처백준 11000번 문제입니다. 1. 문제수강신청의 마스터 김종혜 선생님에게 새로운 과제가 주어졌다. 김종혜 선생님한테는 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 참고로, 수업이 끝난 직후에 다음 수업을 시작할 수 있다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.)수강신청 대충한 게 찔리면, 선생님을 도와드리자!(1) 입력첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000)이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si (2) 출력강의실의 개수를 출력하라. 2. 문제 풀이(1) 문제 풀이 방법이 문제는 그리디 알고리즘을 활용해 풀 수 있는데.. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 24. [백준] 14500번 테트로미노 (Java) 0. 출처 백준 14500번 문제입니다. 1. 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오. 테트로미노는 반드시 한 정사각형이 .. Algorithm & Data Structure/코딩 테스트 문제풀이 2024. 4. 24. 이전 1 2 3 4 ··· 6 다음