전체 글

전체 글

    [카카오코테] 자물쇠와 열쇠

    문제 설명 고고학자인 튜브는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이동이 가능하며 열쇠의 돌기 부분을 자물쇠의 홈 부분에 딱 맞게 채우면 자물쇠가 열리게 되는 구조입니다. 자물쇠 영역을 벗어난 부분에 있는 열쇠의 홈과 돌기는 자물쇠를 여는 데 ..

    2021.01.13 (수)

    스프링강의 구현파트 문제 다 풀기 spring keyword * lombok - @RequiredArgsConstructor : final 붙은 변수들 가지고 생성자 만들어줌 * 조회 대상 빈이 2개 이상일때 (FixdiscountPolicy, RatediscountPolicy) 해결방법 3가지 - @Autowired 필드 명 매칭 parameter나 변수명에 그냥 쓰고싶은 빈 이름을 적어주면 빈이 2개 이상일 때 그 이름으로 매칭한다. ex) DiscountPolicy discountPolicy 대신에 DiscountPolicy RateDiscountPolicy - @Qualifier 등록 등록시키고 싶은 빈에 @Qualifier("mainDiscountPolicy) 같이 원하는 이름 붙여주고 사용 시..

    [카카오코테] 문자열 압축

    문제 설명 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, abcabcdede와 같은 문자열은 전혀 압축되지 않습니다. 어피치는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압축하여 더 ..

    2021.01.12 (화)

    카카오 코테 문자열압축 풀고 블로그에 정리 o 스프링 강의 구현파트 몇문제 더 풀기 x 간이과세자 부가세신고 알아보기 -> 매출계산방법 spring keyword lombok : java에 자동으로 method들을 만들어줌

    2021.01.11 (월)

    계획 스프링 강의 0.5파트 듣기. 0.5파트 안에서 각 목차별로 키워드등 중요한 내용 몇문장 요약으로 적어놓기 코테 구현파트 안풀렸던 문제 해결하고 시간 되는대로 문제 풀기 키워드정리 * 다양한 의존관계 주입 방법 - 생성자주입 : 딱 1번만, 불변, 필수일때 꼭 사용하기 - 생성자 1개일때 @Autowired 생략 가능 - 수정자주입 : 변경 가능하게 할때 스프링 컨테이너 생성과정은 생성, 의존관계주입 2가지 존재. 생성자 주입은 생성하면서 동시에 의존관계가 주입됨. 근데 수정자주입에 @Autowired가 붙어있으면 의존관계 주입 시간에 주입됨. * 옵션처리 @Autowired(required = true) : 기본값 @Autowired(required = false) : 자동주입시 bean이 아닐경..

    2021.01.09 (토)

    아침일찍 코로나검사받고와서 쉬다가 벌써 5시돼버림 어차피 주말에는 코테나 스프링 둘중 하나씩만 하기로 했으니 오늘은 코테 구현부분 몇문제 풀어봐야겠다.

    [카카오코테] 무지의 먹방 라이브

    문제 설명 무지의 먹방 라이브 * 효율성 테스트에 부분 점수가 있는 문제입니다. 평소 식욕이 왕성한 무지는 자신의 재능을 뽐내고 싶어 졌고 고민 끝에 카카오 TV 라이브로 방송을 하기로 마음먹었다. 그냥 먹방을 하면 다른 방송과 차별성이 없기 때문에 무지는 아래와 같이 독특한 방식을 생각해냈다. 회전판에 먹어야 할 N 개의 음식이 있다. 각 음식에는 1부터 N 까지 번호가 붙어있으며, 각 음식을 섭취하는데 일정 시간이 소요된다. 무지는 다음과 같은 방법으로 음식을 섭취한다. 무지는 1번 음식부터 먹기 시작하며, 회전판은 번호가 증가하는 순서대로 음식을 무지 앞으로 가져다 놓는다. 마지막 번호의 음식을 섭취한 후에는 회전판에 의해 다시 1번 음식이 무지 앞으로 온다. 무지는 음식 하나를 1초 동안 섭취한 ..

    2021.01.08 (금)

    현재 시각 : 오후 4시 형과 사업이야기 하고 오후 3시에 스터디 카페로 출발. 스터디카페는 9시까지 하니 남은 공부시간은 4시간 + @ 오늘 목표 지금까지 푼 greedy문제들 정리.(2시간) 스프링 강의 1파트 (2시간) * Key words 빈 컨테이너 싱글톤 @Configuration : 없으면 싱글톤 보장 x @ComponentScan : @Component : 자동으로 bean에 등록해줌 그런데 이것만 등록하면 의존관계를 모름. 원래는 AppConfig에서 지정해줬었음. @Autowired : 그래서 autowired사용하면 해당하는 타입을 자동으로 의존관계를 맺어줌 greedy 문제중 가장 난이도가 있던 무지의 먹방라이브만 풀이과정을 복기하며 블로그에 정리함

    IoC, DI 용어정리

    IoC, DI 도 스프링 개발자 오픈톡방이나 스프링 이야기가 나올 때마다 자주 보이던 용어들이었다. 당시에 궁금해서 구글에 검색했을땐 IoC : 제어의 역전 DI : 의존관계 주입 이라고 나오는 결과들만 보고서 이해가 안되어 그냥 넘어갔던 것들이다. IoC (Inversion of Control) 제어의 역전 IoC (제어의 역전) 의 사전적 정의 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. 말 그대로 기존에 프로그램의 제어흐름을 직접 제어하던 것을 외부에서 관리하도록 역전 시킨다는 것을 말한다. 하지만 이해하기 쉽게 코드를 이용해 설명해 볼 것이다. 코드에 대한 배경지식을 먼저 설명하자면, MemberRepository 인터페이스는 MemoryMemberReposi..

    좋은 객체지향이란? (5가지 원칙)

    Spring을 제대로 시작하기 전에 좋은 객체지향이 무엇인지 뇌에 때려박고 시작해야할 것 같아서 정리해보았다. 솔직히 Java로 객체지향을 엄격히 지켜 프로그래밍 한 적은 거의 없었다. 혼자서 개발하다보니 굳이? 라는 생각에 java나 c++로 코드를 작성할때도 그냥 c언어 처럼 작성했다. java나 c++은 그냥 라이브러리 제공하는 언어정도? 그런데 c언어나 django로 프로젝트를 진행했을때 몇가지 불편한 점을 느꼈다. c언어로 작성할때 아무리 함수로 나눈다고 하더라도 스파게티 소스가 되어 버리고, django에서 친구와 협업할때도 서로의 개발 영역이 구분이 되지 않았다. 그런데 아이러니하게도 내가 귀찮아서 하지 않던 객체지향프로그래밍이 이런 문제들을 해결하기 위해 나온 방법론이었다..ㅋ 이제야 뒤늦..