분류 전체보기
[프로그래머스] 2020 카카오 블라인드 - 괄호 변환
문제 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 풀이 문제에서 요구하는 것을 잘 알아듣고 구현하는게 관건인 문제였다. 왜 저런 프로세스를 거치면 올바른 괄호 문자열이 되는 것인지 잘 이해가 안가서 예시를 써보며 이해했다. 어쨌거나 문제는 내가 직접 올바를 괄호 문자열을 만드는 로직을 짜는 것이 아니고 저 프로세스를 따라 구현하는 것이었어서 순서대로 함수를 작성했다. def splitP(string): pa..
[프로그래머스] 2019 카카오 블라인드 - 후보키
문제 https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 풀이 참고) append와 extend의 차이점 from itertools import combinations def solution(relation): answer = 0 all = list() uniqeIndex = [] if le..
[프로그래머스] 2019 카카오 블라인드 - 무지의 먹방 라이브
문제 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 풀이 K보다 커지게 되면 남은 시간의 개수로 나누지 않고 그때부터 while문을 돌다가 오버된 시간의 인덱스에서 반환하도록 했다. 근데 이렇게 했더니 몇몇 효율성 테스트에서 시간초과가 발생했다. def find_order(time, sec, over): #기준 시간과 K를 넘긴 값을 받는다. for i in range(len(time)): #기준 시간보다 큰 값, 즉 다 소비되지 않은 음식만 남긴다. time[i] -= sec i = len(time) while(over > 0): #마지막인덱스부터 거꾸로 돌며 정확히 k초 일 ..
[프로그래머스] 2019 카카오 블라인드 - 실패율
문제 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 from collections import Counter import operator def solution(N, stages): dic = dict(Counter(stages)) dic2 = dic.copy() for n in range(N+1, 0, -1): if n == N+1: if n not in dic: dic[n] = 0 else: if ..
[프로그래머스] DFS/BFS 4. 여행경로
문제 https://programmers.co.kr/learn/courses/30/parts/12421 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 카카오 문제를 풀다보니, 구현력을 요구하는 문제가 생각보다 많았다. 내가 생각하기에 깔끔한 풀이가 아니더라도 그걸 끝까지 구현해 내는 것이 관건인 문제들이 많았다. DFS/BFS 카테고리에 있었지만 DFS/BFS 의 풀이는 생각나지 않았고 다른 풀이가 떠올랐는데, 정답이 아닐 것 같다고 생각했지만 일단 구현해보기로 했다. 처음에는 단순하게 알파벳순으로 정렬하여 출발지점에서 도착할 수 있는 곳들 중 알파..
[프로그래머스] 2021 카카오 인턴십 - 거리두기 확인하기
문제 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 풀이 처음엔 반복문을 돌며 기준 좌표 P를 찾았다. 기준 좌표에서 맨해튼 2 이하의 ..
[기본] 의존관계 자동 주입
메모 ctrl + F12: 메소드 보기 ctrl + alt + B : 구현체 보기 ctrl + alt + insert : new ctrl + B : 해당 클래스 사용하는 파일 추적 ctrl + N : Navigate to class 다양한 의존관계 주입 방법 의존관계 주입 방법은 크게 4가지이다. 생성자 주입 - 주로 불변/필수 의존관계에 사용한다. 생성자가 1개인경우 @Autowired 생략 가능 수정자 주입(Setter 주입) - setter 메서드를 통해 DI한다. 선택/변경 가능성 있을 때 사용 필드 주입 - 비추 외부 변경이 불가능해 순수 자바코드로 테스트 불가능하다. 일반 메서드 주입 참고: 스프링 컨테이너가 관리하는 빈이어야 동작한다. 실무에서는 자동/수동 등록 모두 사용한다. final키워..
[기본] 컴포넌트 스캔
메모 @Repository 스프링이 데이터 예외를 추상화해서 반환해준다 특정 DB에 한정적인 예외를 스프링이 추상화해준다 /?? @Target(Element.TYPE) 필드에 붙냐 어디에 붙냐 이런건데, TYPE라 하면 클래스 레벨에 붙는 것? 코드를 조금 더 깔끔하게 하기 위해 어설프게 추상화 등 우선순위가 생기면 나중에 잡기 힘든 버그가 됨 코드가 조금 더 많아지더라도 명확하게 짜는 것이 좋음 컴포넌트 스캔과 의존관계 자동 주입 시작하기 직접 설정 정보에 입력할 스프링 빈이 수백개가 되면 관리가 힘들어진다. 그래서 스프링은 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 의존관계 주입은 @Autowired로 가능하다. 설정 클래스에 @ComponentScan, @Configuration..