전체 글

문제 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요. 무..
·JAVA
JVM이란 무엇인가? JVM(Java Virtual Machine)은 자바를 실행하기 위한 가상기계로 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것으로 자바 어플리케이션을 클래스 로더를 통해 읽어들여서 자바 API와 함께 실행하는 역할을 합니다. Write once, run anywhere(한 번 작성하면 어디서든 실행된다.)  JAVA언어로 작성된 애플리케이션은 JVM을 거쳐서 운영체제와 상호작용하게 됩니다. JVM은 바이트코드(컴파일된 자바 코드)를 하드웨어/OS 환경에 알맞게 변경해주는 역할을 해주고, 이를 통해서 운영체제로부터 독립적으로 프로그램을 작성할 수 있는 장점이 있습니다.단 JVM은 운영체제에 종속적이기 때문에 해당 운영체제에서 실행가능한 JVM이 필요합니다..
문제 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 문제풀이 import java.util.*; class Solution { public int solution(String s) { int answer = 0; Stack stack = new Stack(); for(char c : s.toCharArray..
문제 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 풀이 import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack stack = new Stack(); for(char x : s.toCharAr..
문제 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을 가집..
·Backend/spring
API를 테스트하는 대표적인 도구로는 Swagger와 RestDocs가 있습니다. 이전에 프로젝트를 진행했을 때는 Swagger를 이용해 API를 문서화 했었는데 이번에 진행하는 프로젝트에서는 2가지의 이유로 Rest Docs을 이용해 API를 문서화 해보려고 합니다. Swagger는 프로덕션 코드에  설정이 필요하다.@RestController@RequiredArgsConstructor@RequestMapping("/users")public class UserController { private final UserService userService; private final UserAuthService userAuthService; @ApiOperation(value = "회원가입 AP..
·Backend/JPA
1. 문제점 Repository 계층을 @DataJpaTest를 이용해 테스트하다 아래와 같은 에러가 발생했다. 메시지를 보면 db에 반영될 때 자동으로 값을 주입해주는 auditing기능이 제대로 작동하지 않는 것을 알 수 있습니다. 이전에는 아래와 같이 @SpringBootApplication 위에 어노테이션이 위치해 있었다가 @EnableJpaAuditing @SpringBootApplication public class PracticeApplication { public static void main(String[] args) { SpringApplication.run(DosTicketApplication.class, args); } } config를 따로 분리 시켜줬는데 config가 적용되지 ..
·Backend/JPA
1. JPA Auditing프로젝트를 진행하다보면  Entity에 데이터를 언제 생성하고 수정했는지 보여주는 필드를 사용하는 경우가 많습니다.사용자가 데이터를 업데이트 하거나 생성할 때 시간 값을 직접 넣어주고 변경하는 것은 귀찮고 실수로 인해 놓치는 경우가 발생할 수 있습니다.이럴 때 JPA의 Auditing 기능을 이용하면 쉽게 이런 문제점을 해결할 수 있습니다.JPA는 Entity를 지켜보다 이벤트에 반응해 생성, 수정일자 값을 자동으로 넣어준다 (Auditing : 감사) 2. Auditing 기능 활성화하기@EnableJpaAuditing@SpringBootApplicationpublic class JpaApplication { public static void main(String[] args..
문제설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한장 씩 사용합니다 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한 후..
문제설명주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.nums의 각 원소는 1 이상 1,000이하의 자연수이며, 중복된 숫자가 들어있지 않습니다입출력 예numsresult[1,2,3,4]1[1,2,7,6,4]4문제풀이class Solution { public int isPrime(int num) { for(int i = 2; i 해결방법1. 소수인지 판별해주는 메서드를 만들어줍니다. ..
여포개발자
어제보다 오늘 더