전체 글
[DFS] 양과 늑대 (python) - 카카오
https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 DFS/BFS 둘 다 풀이 가능한데, 설명이 길어서 여기서는 DFS만 쓰고 BFS는 따로 포스팅했다. DFS는 연산자 끼워넣기 문제와 비슷하게 접근할 수 있다. 1. DFS 풀이 # 2. 재귀함수 def dfs(x,y): # 3. 현재 노드에서 연결된 노드들 for 다음 노드 in 연결된 노드들: # 4. 조건 만족 시 바로 끝까지 실행 재귀함수 if 문제 조건: dfs(nx,ny) #..
[누적합] 광고 삽입 (python) - 카카오
문제 풀이 💡 1. 시간을 전부 초로 바꿔서 배열로 풀이하기 💡 2. 누적합 최종 코드 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72414 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 💡Idea! 1. 시간을 전부 초로 바꿔서 배열로 풀이하기 2. 누적합 💡 1. 시간을 전부 초로 바꿔서 배열로 풀이하기 시간, 분을 전부 초로 바꾸어 매초마다의 시청자수를 기록하는 배열을 만든다. 이를 통해 구간별 누적합을 구할 예정! 💡 2. 누적합 adv_time 구간 동안의 합의 최대를 구하기..
IOC(Inversion of Control, 제어의 역전)란
IoC(Inversion of Control, 제어의 역전)란 객체의 생성과 객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델 이 방식은 대부분의 프레임워크에서 사용하는 방법으로, 개발자는 필요한 부분을 개발해서 끼워 넣기의 형태로 개발하고 실행하게 된다. 이렇게 조립된 코드의 최종 호출은 개발자에 의해서 제어되는 것이 아니라 프레임워크의 내부에서 결정된 대로 이뤄지게 되는데, 이러한 현상을 "제어의 역전"이라고 표현한다. Spring에서의 IoC Spring 프레임워크에서 지원하는 Ioc Container는 자바 객체(빈)의 생성과 생명주기, 의존관계를 관리한다. 이를 코드 대신 컨테이너가 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 그래서 스프링 컨테이너를 IoC ..
[BFS/DFS] 거리두기 확인하기 (python) - 카카오
https://programmers.co.kr/learn/courses/30/lessons/81302#fnref1 코딩테스트 연습 - 거리두기 확인하기 [["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 BFS로 풀이 이 문제는 두 가지 부분을 기본 BFS에서 추가?주의해주면 된다..
[JPA] JPA Auditing 사용하기 - Entity 생성시간 자동화
엔티티를 생성/수정할 때, 시간을 측정해야하는 경우가 많은데, 이 기능을 엔티티마다 함수로 만들어주기는 번거롭다. => JPA Auditing을 사용하여 자동화해줄 수 있다. 1. 도메인에 BaseTimeEntity 엔티티를 새로 만들어준다 @Getter @MappedSuperclass // 해당 클래스를 상속받을 경우, 해당 클래스의 필드들도 컬럼으로 인식함 @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @CreatedDate // Entity 최초 생성될 때 시간 자동 저장 private LocalDateTime createdDate; @LastModifiedDate // 수정될 때 시간 자동 저장 privat..
[BFS] 단어 변환 (python) - 프로그래머스
https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr BFS 문제인데, '단어 하나만 다를 경우 = 연결된 간선이 존재한다'로 해석해서 풀면 된다! 기본 BFS 로직이 아래와 같다면, 여기서 '3번 이 노드에서 연결된 다른 노드들' 과정이 복잡한 문제로 볼 수 있다. # 1. 초기화 q = deque([start]) # 2. q가 빌 때까지 반복 while q: now =..
[DFS] 타겟 넘버 (python) - 프로그래머스
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 연산자 끼워 넣기 와 비슷한 문제! -> DFS로 풀고, 연산자와 피연산자의 index값을 매개변수로 잘 넘겨주어야함 def solution(numbers, target): n= len(numbers) result = 0 def dfs(tmp, index): nonlocal result if index == n: if tmp == targ..
[SpringBoot] .idea 디렉토리 제외하기
.idea 디렉토리는 커밋하지 않는다. (실행시 자동 생성되는 파일이기에 깃허브에 올릴 필요가 없다!) 아래 코드를 .gitignore 파일에 추가해준다. .gradle .idea
[다익스트라] 전보 (python)
전보 - 이코테 교재 p262 문제설명 어떤 나라에는 N개의 도시가 있다. 그리고 각 도시는 보내고자 하는 메세지가 있는 경우, 다른 도시로 전보를 보내서 다른 도시로 해당 메세지를 전송할 수 있다. 하지만 X라는 도시에서 Y라는 도시로 전보를 보내려면 도시 X -> Y로 가는 통로가 설치되어 있어야 한다. 어느 날 C라는 도시 C에서 위급 상황이 발생해 최대한 많은 도시로 전보를 보내야 한다. 메세지는 도시 C에서 출발해 각 도시 사이에 설치된 통로를 거쳐 최대한 많이 퍼져나갈 것이다. 각 도시의 번호와 통로가 정보로 주어졌을 때, 도시 C에서 보낸 메세지를 받게 되는 도시의 개수는 총 몇 개 이며 도시들이 모두 메세지를 받는 데까지 걸리는 시간은 얼마인지 계산하는 프로그램을 작성해라. 입력조건 첫째 ..