일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ac 5430번
- 백준 3190번
- StringTokenizer
- 프로그래머스 java
- kotlin
- map
- 코틀린기초
- append
- 프로그래머스 자바
- 백준 14938번 서강그라운드
- toUpperCase
- 백준 1647번 도시 분할 계획 - java
- 최소 힙 1927
- mysql hy000 에러
- replace()
- 프로그래머스
- StringBuilder
- 백준 1197번 최소 스패닝 트리 - java
- hash
- 백준 1806번 부분합 java
- HashSet
- 백준 2467번 용액 자바 - 이분탐색
- Stack
- Java
- dp
- HashMap
- 18111번 마인크래프트 - java 구현
- 백준 1541
- 백준 2473번 세 용액 - java
- 백준 1043번 거짓말 - java 분리 집합
- Today
- Total
목록전체 글 (176)
말하는 컴공감자의 텃밭
뭐 간단하다 트리형식으로 연결되어 있고, 연결된 거리가 주어진다. 이후 N과 M의 거리는 몇이야? 묻는 문제이다. 가볍게 BFS로 풀어줬다. HTML 삽입 미리보기할 수 없는 소스 Node 클래스를 짜서 넣어도 되고, 큐에 배열보단 그냥 따로 dist 변수를 만들어서 해결해도 된다.
로깅 라이브러리를 사용해 로그를 출력해보자. 스프링 부트에서는 기본적으로 아래 라이브러리를 사용한다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch 오늘은 SLF4J 를 사용해봅시도 @RestController로 View를 반환하지 않고 바로 메세지 바디에 String을 넣어주게 사용한다. HTML 삽입 미리보기할 수 없는 소스 application.properties 에 아래 코드를 추가하면 콘솔창 색이 구분되어진다. spring.output.ansi.enabled=always 로그 범위 ? -> 로그가 출력되는 포멧 확인 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지 Level 단계 TRACE > DEBUG > I..
legacy ? legacy : 유산 IT쪽에서는 낡은 기술이나 방식, 컴퓨터 시스템 SW 등을 말할때 사용되곤 한다. ex) 레거시 프로젝트 : 오래된 기술이나 아키텍처를 사용하여 개발되었거나, 현재의 개발 표준이나 기술적 요구사항을 충족시키지 못하는 소프트웨어 프로젝트를 의미 결국 SW 개발에서 불가피하게 만들어진 오래되고, 수정하기 어려운 친구들이 되겠다.
입력들이 주루루 주어지고 1이 루트로 기준이 된다. 입력예제 처럼 주어지게 되면. 그림과 같이 입력이 들어온다. 1이 root 가 된다면 이처럼 표기할 수 있겠다. 따라서 각 자리의 부모를 나타내면 2 : 4 3 : 6 4 : 1 5 : 3 6 : 1 7 : 4 이다. Level 별로 나타내는게 문제의 핵심이기때문에 Map에 레벨과 리스트를 넣어 tree를 구성해주었다. static Map tree = new HashMap(); 이후 선언된 tree에 입력을 처리할때 computeIfAbsent를 활용해서 기존 값이 있다면 추가, 없었다면 새로 리스트를 넣어주었다. tree.computeIfAbsent(a, k -> new ArrayList()).add(b); dfs 재귀를 통해서 모든 트리를 찾아 주었..
이진트리 입력이 주어지고, 해당 트리를 전위 중위 후위한 결과를 출력하는 문제이다. 입력에 . 은 자식이 없다는 의미로 받아주면 된다. 트리를 순회할때는 큰 삼각형을 작은 삼각형으로 쪼개서 순회한다고 생각했다. 따라서 재귀함수로 작성하는게 문제의 포인트이다. Node 클래스로 왼쪽과 오른쪽 자식을 관리해 주었고, '.' 입력이 주어질때는 자식에 Null을 주는 방식으로 처리를 했다. 전위 순회의 경우 루트 먼저, 이후 왼 > 오 자식을 순회하고. 중위의 경우 왼쪽 아래까지 쭉 내려갔다가 더이상 자식이 없으면 루트, 오른쪽 자식을 찾는 방식이다. 마지막으로 후위는 왼쪽 아래 탐색 후 오른쪽 아래 탐색. 이후 없다면 부모 노트 체크. 이다. 결론적으로 전위는 출력하고 왼쪽 오른쪽 재귀함수를 호출. 중위는 왼..
구간중에 가장 사람이 많이 겹치는곳을 찾고, 그 구간이 여러 장소에서 겹친다면 알파뱃 순으로 정렬. 정해진 장소에서 여러 시간대가 사람이 많다면 가장 빠른 시간대로 출력한다. >> 이 규칙들을 제대로 안읽고 모든 구간에서 가장 긴 구간 찾고,,, 세그먼트 나누고 2시간은 걸린거 같다. 막상 다 작성하니까 가장 빠른이라 훨씬 쉽게 해결됐다... 해시 + 정렬 쓖쓖.. 해시맵에 배열을 넣어서 구간 범위를 증가시켜 주었고, MAX 값을 가진 장소를 리스트에 넣어서 구간을 체크해주었다. HTML 삽입 미리보기할 수 없는 소스
문제가 간단하다. 문제를 잘 읽으면 N 을 반 쪼개서 1차이로 나누는 로직이 존재합니다이 홀수면 N-1/2 랑 N-1/2 로 나누고, 짝수면 반반 가져가게 되는데 이런 과정을 모두 Set에 담아줍니다. 그리고~ 여기에 M이 포함되면 Yes 해주면 꿑 꿑 꿑 만약 130이 N 이라면 요로코롬.. 주루루 저장이 된다. 규칙이 존재하는데 홀수가 나타나는 순간 두 갈래로 갈라진다. 짝수라면 반반 이고 중복 저장 안하니까 1개씩 저장된다. 코드로 보잡 HTML 삽입 미리보기할 수 없는 소스
먼저 쿼리 개수가 주어진다. 이후로 1 또는 2의 쿼리 값이 주어지고, 고릴라의 이름. 정보의 개수 정보의 가치 가 주어진다. 문제를 한 20분 읽은거 같다. Cpp 5 10 4 2 8 2 라길래 5도 정보에 포함인줄 .... 이렇게 되겠다. 여기서 가장 큰 값만 가져오기 때문에 정렬이 필요한데 우선순위 큐를 활용했다. 우선순위 큐(Priority Queue)는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 것. 힙(Heap)으로 정렬하기에 시간 복잡도는 추출 삽입 모두 O(logn) 이다. 그리고 Map 을 편하게 쓰기위해 처음보는 메서드를 써봤는데 간단하게 key에 valuye가 존재하면 가져와서 사용하고, 없으면 새로 만들어주는 메서드다. computeIfAbsent(K key, Fu..