분류 전체보기

    프로그래머스 - 2개 이하로 다른 비트 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 생각보다 신경 써야하는게 많은 문제 기본적으로 짝수 홀수부터 나눠야한다. 짝수면 + 1만 진행 하면된다. 이유는 짝수의 2진수는 모두 0으로 끝나기 때문에 끝을 1로 바꾸는 것 만으로 해결이 가능하기 때문 ex) 10 -> 11 100 -> 101 홀수는 상대적으로 복잡해진다. 0을 미포함하는 경우 즉 1로만 이루어진 경우 앞에서 2번째 자리에 0을 삽입하여 해결 ex) 111 -> 1011 0을 포함하는 경우 마지막 0을 1로 바꾸고 그 뒤에 1을 0으로 바꾸어서 해결 ex) 10011 -> 10101 // 프로그래머스 2개 이..

    프로그래머스 - 삼각 달팽이 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 삼각형을 일단 왼쪽으로 밀어서 직각 삼각형을 만들어주면 풀기 쉬워진다. 아래 이미지처럼 1. 왼쪽 위에서 아래로 2. 왼쪽 아래에서 오른쪽 아래로 3. 오른쪽 아래에서 대각선 위로 앞선 3개의 반복으로 값을 채워가면 된다. // 프로그래머스 삼각 달팽이 문제 class Solution { public int[] solution(int n) { int max = n * ..

    프로그래머스 - 예상 대진표 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/12985?language=java 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 번호가 큰 선수와 작은 선수를 구별하고 라운드를 진행하면서 두선수가 만나는 경우 - 두 선수의 번호가 1차이 이면서 작은 수가 홀수 인 경우 (1,2는 가능하지만 2, 3 이면 안되기 때문) 만나기 전까지 두 선수 모두 이기는 경우의 번호를 배정 번호가 짝수이면 2로 나눈 값 홀수이면 2로 나눈 값 + 1 ex)..

    자바 예외 다루기 - 에러 처리 방식

    앞선 글에서 에러와 예외에 대해서 다루었습니다. 이번에는 예외를 어떻게 처리하는지 어떻게 다루는지에 대해서 정리해보고자 합니다. 예외를 다르는 방법으로는 3가지 정도가 있습니다. 우선 처리하기 전에 간단한 샘플 코드를 만들어 보면 1. 호출을 받는 클래스로 예외가 발생합니다. @Service @Slf4j @RequiredArgsConstructor public class TransactionService { ... public void getException() { throw new TestException(); } } 2. 호출하는 클래스 @Service @Slf4j @RequiredArgsConstructor public class TestObjectService { private final Tran..

    Error 와 Exception(Checked, Unchecked)

    네이버 웹툰 인턴 면접 중 받았던 질문인데 개발하면서 익셉션을 던지고 받아서 처리한적이 여러번 있는데 설명하라고 하니 ..... 에러(Error) 에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것 따라서 개발자가 미리 예측하여 처리할 수 없기 때문에, 애플리케이션에서 오류에 대한 처리를 신경 쓰지 않아도 된다. 예외(Exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류. 예외가 발생하면 프로그램이 종료가 된다는 것은 에러와 동일하지만 예외는 예외처리(Exception Handling)를 통해 프로그램을 종료되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 ..

    트랜잭션 격리 수준

    트랜잭션 격리 수준 데이터베이스에 N개의 트랜잭션을 동시에 처리하다 보면 같은 데이터에 접근할 수 있다. 트랜잭션의 목적은 로직의 흐름 속에서 데이터를 일관되게 처리하기 위한 것이나, 동시에 같은 데이터에 write 접근을 하는 경우엔 문제가 될 수 있다. 이러한 상황에서 트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 말한다. 단순하게 생각하면 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다. 격리수준에는 4가지가 있다. READ_UNCOMMITED (level 0) READ_COMMITED (level 1) REPEATABLE_READ (level 2) SERIALIZABLE (level 3) 격리 수준이 높아질수록 동시성(Concurrency..

    Spring에서 사용하는 어노테이션 정리

    면접에서 @SpringBootApplication에 대해서 질문을 받았는데 분명 스프링부트 프로젝트에서 항상 사용하는데 제대로 답변하지 못한 충격으로 Spring에서 사용하는 어노테이션들을 볼때마다 정리 할려고 만든 글입니다. 제대로 설명 못하는 것들을 전부 적어두고 정리해 나아갈려고합니다 .ㅎ 미정리 목록 // Lombok @Slf4j - 로그를 남기기 위해 Logger 변수를 선언을 따로 하지않게 해주는 어노테이션 @Getter - 클래스나 필드 위에 적용하면 getter 메서드를 생성 @Setter - 클래스나 필드 위에 적용하면 setter 메서드를 생성 @NoArgsConstructor - 파라미터가 없는 기본 생성자 생성 @RequiredArgsConstructor - final, @NonNu..

    Spring 트랜잭션 전파

    Spring에서 사용하는 어노테이션 '@Transactional'은 해당 메서드를 하나의 트랜잭션 안에서 진행할 수 있도록 만들어주는 역할을 합니다. 이때 트랜잭션 내부에서 트랜잭션을 또 호출한다면 스프링에서는 어떻게 처리하고 있을까요? 새로운 트랜잭션이 생성될 수도 있고, 이미 트랜잭션이 있다면 부모 트랜잭션에 합류할 수도 있을 것입니다. 진행되고 있는 트랜잭션에서 다른 트랜잭션이 호출될 때 어떻게 처리할지 정하는 것을 '트랜잭션의 전파 설정'이라고 부릅니다. 간단한 실습 코드를 먼저 작성합니다. import lombok.ToString; import javax.persistence.*; @Entity @ToString public class TestObject { @Id @GeneratedValue(..