분류 전체보기

    [프로그래머스] 동적계획법 4. 도둑질

    문제 https://programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 풀이 어제 풀었던 계단 문제랑 비슷하다고 생각했다. n번째 계단을 오르는 방법 = n-1번째 계단을 오르는 방법 + n-2번째 계단을 오르는 방법 이었다. 이 문제는 풀이는 동일하지만 원형이라서 예외처리를 어떻게 해야할지 고민을 좀 오래 했다. 1,2 둘다 안털고 3을 터는 경우도 있지 않나 싶어서 고민하다가 다른분걸 좀 참고했는데 그냥 단순히 처음 방문한 ..

    [기본] 싱글톤 컨테이너

    메모 잘 설계한 객체는 컴파일 오류만으로 웬만한 오류가 잡힘 99% 싱글톤 사용 싱글톤을 사용하지 않을 때: http 요청에 맞춰 빈 라이프사이클을 정할 때(고객이 들어올 때 생성, 나갈 때 죽이는 등) 등 ctrl + shift + T : create new test ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 하면 AppConfig도 Bean 에 등록됨 싱글톤 패턴 클래스 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 싱글톤 패턴을 구현하는 데에는 여러가지 방법이 있다. static으로 객체를 하나만 생성해두고 getInstance로 가져다 씀. private 생성자를 통해 외부에서 new ..

    [기본] 스프링 컨테이너와 스프링 빈

    메모 JUnit 5부턴 public 안해도 됨 iter 엔터: 이터레이터 soutm : 메소드명 찍어줌 soutv: 변수명 찍어줌 ctrl + D : 복사붙여넣기 alt + shift + 위아래 : 줄 이동 ctrl + E : 이전파일 ctrl + R : Replace같음 ctrl + shift + f10: (메소드 안에서) 해당 메소드 실행 ?? getBeanDefinition(beanDefinitionName) : 빈에 대한 정보(메타데이터)를 꺼낼 수 있음 beanDefinition.ROLE_APPLICATION: 스프링 내부에서 등록한 빈 말고 어플리케이션을 위해 개발자가 등록한 빈 스프링빈에 등록된 인스턴스 타입으로 결정됨 테스트에서는 출력물을 남겨두지 않는 것을 권장. 시스템 자체로 테스트할 ..

    [프로그래머스] 2020 카카오 인턴십 - 키패드 누르기

    문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 문제에서 시키는대로 구현하면 되는 문제였다. 정말 이대로 구현하면 됐다. 이전 손의 위치가 다음 번호를 누를 손을 결정할 때 필요하기 때문에 손의 위치 정보를 저장해 두기로 했다. 다만 1번에서 한 칸 거리를 1로 해당한다는 조건을 제대로 읽..

    [프로그래머스] 2018 카카오 블라인드 [1차] 뉴스 클러스터링

    문제 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 풀이 알고리즘은 따로 고민할 것이 없었고 문제에 주어진 그대록 구현하는 문제였다. 간단히 하자면 다음과 같다. 두 자씩 잘라 리스트에 넣는다. 영문자 아닌건 버린다. 두 리스트의 교집합을 합집합으로 나눈다. def solution(str1, str2): sp_str1 = [] sp_str2 = [] for i in range(1, le..

    [프로그래머스] 2020 카카오 인턴십 수식 최대화

    문제 https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 풀이 어느 카테고리에 속하는 문제인지 고민하다 완전탐색으로 풀기로 했다. 그런데 연산을 하는 과정 자체가 좀 까다로웠다. 먼저 연산자랑 피연산자를 나누는 방법에 대해 고민하다 반복문밖에 떠오르지 않아 다른 사람의 풀이를 봤다 (https://velog.io/@yujin1760/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B..

    [프로그래머스] 탐욕법 6. 단속 카메라

    문제 https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 풀이 들어온 지점으로 정렬 나간 지점으로 정렬 나간 지점을 기준으로 반복문: 나간 지점 전에 들어온 지점들 방문처리 count += 1 들어온 지점 모두 방문했으면 반복문 탈출 근데 뭔가 짜다보니까 visited 안만들어도 되겠다는 생각이 들어서 그냥 해봤다. def solution(routes): answer = 0 start = [] end = [] for r in routes: start.append(r[0]) end.append(r[1]) start.so..

    [기본] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

    메모 ctrl + shift +T : Create new test @DisplayName("") JUnit5 부터 지원하는 기능, 해당 이름으로 테스트 결과 출력됨 항상 실패 테스트도 해봐야 한다. Assertions는 static으로 import하는게 좋다. final은 무조건 값이 할당되어야 함 ctrl + E : history ctrl + alt + m : extract method (함수뽑기) 인터페이스는 아무곳에도 의존하고 있지 않다. 다이어그램 의존하는쪽에서 화살표 출발한다. 새로운 할인 정책과 문제점 기획자가 기존 할인 정책 대신 새 정책을 적용할 것을 요구 "계획에 따르기보다 변화에 대응하기를" - 애자일 소프트웨어 개발 선언https://agilemanifesto.org/iso/ko/ma..