본문 바로가기

전체 글455

이진트리 (JAVA 코드 포함) 대학생때부터 취업 직전까지 많이 듣고 많이 공부한 알고리즘 중 하나는 당연 트리이고, 그 중 이진트리를 기초로 생각하고 배운 적이 있다. 한창 취준하며 코테를 공부하던 때에는 과장해서 말하자면 이진트리는 굳이 생각이라는 것을 거치지 않고도 단어만 듣고 코드가 줄줄 써지는 정도였다. 하지만 너무 기초라고 생각했고, 취업 이후에는 이 구현 방법 자체를 머리속에서 지우고 살았다. 자기변명을 해보자면, 이진 트리를 굳이 실무에서 적용할 일이 없었고, 또 지난 여러 기업의 코딩 테스트를 응시하며 이진 트리가 나온 적은 한 번도 존재하지 않았었기 때문이다. *물론 많은 회사의 코딩테스트에 응시했던 것은 아니므로, 언제 어디서 등장할 지는 모른다. 이 사실을 상기하지 못한 것에 대한 변명일 뿐이다. 그렇게 살던 중 .. 2024. 2. 26.
[JAVA] 붕대 감기 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int[] bandage, int health, int[][] attacks) { // 현재 체력 int healthNow = health; // 몬스터의 마지막 공격이 끝나는 시간 int lastTime = attacks[attacks.length-1][0]; // 다음 공격 int nextAttack = 0; // 붕대 감기 .. 2024. 2. 24.
[JAVA/DFS]단어 변환 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr class Solution { int answer = Integer.MAX_VALUE; boolean[] converted; public int solution(String begin, String target, String[] words) { converted = new boolean[words.leng.. 2024. 2. 24.
[JAVA/DFS] 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { private String SPACE = " "; List travelList = new ArrayList(); boolean[] ticketUsed; int ticketCnt; public String[] solution(String[][] tickets) { ticketCnt = tickets.length; ticketUsed .. 2024. 2. 24.
[JAVA/DP] 등굣길 https://school.programmers.co.kr/learn/courses/30/lessons/42898# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int m, int n, int[][] puddles) { // 쉽게 하기위해 판 생성 int[][] board = new int[n+1][m+1]; board[1][1] = 1; // 웅덩이는 -1로 표시 for(int[] puddle : puddles) { // 이거때문에 한참 헤맴... [puddle[0]][puddle[1].. 2024. 2. 24.
[JAVA/DFS] 네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { int answer = 0; boolean[] visited; public int solution(int n, int[][] computers) { visited = new boolean[n]; for(int i=0; i 2024. 2. 23.
[JAVA/BFS] 가장 먼 노드 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int n, int[][] edge) { int answer = 0; // edge와 방문 기록 저장 Map edgeMap = new HashMap(); boolean[] visited = new boolean[n+1]; // edgeMap 초기화 for(int i=1; i 2024. 2. 23.
[JAVA] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public String[] solution(String[][] plans) { String[] answer = new String[plans.length]; // 다루기 편하게 클래스로 변경 Homework[] homeworks = new Homework[plans.length]; for(int i=0; i< plans.leng.. 2024. 2. 23.
[JAVA] 디펜스 게임 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.PriorityQueue; import java.util.Collections; class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; // 막은 적들을 내림차순으로 저장 PriorityQueue pq = new PriorityQueue(Collections.reverseOr.. 2024. 2. 22.
[JAVA/DP] 연속 펄스 부분 수열의 합 https://school.programmers.co.kr/learn/courses/30/lessons/161988# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public long solution(int[] sequence) { // 16, 19, 20이 계속 에러가 나서 왜그런가 하고 봤더니 자료형을 int가 아니라 long으로 하면 해결됨 // https://school.programmers.co.kr/questions/45489 // +1을 먼저 곱할때와, -1을 먼저 곱할때의 경우의 수 // 사실 굳이 이렇게할 .. 2024. 2. 22.
[JAVA/BFS] 석유 시추 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { // 각 열별로 얻을 수 있는 석유의 총양 int[] total; // 탐색 여부 private boolean[][] visited; // 정답 private int max = 0; public int solution(int[][] land) { // 입력된 land의 크기에 따라 필요한 배열 크기 지정 total = new in.. 2024. 2. 22.
[PostgreSQL] VARCHAR 칼럼 내 일부 단어만 변경 한 테이블의 VARCHAR 칼럼 내 일부 단어를 다른 단어로 변경해야 하는 상황이 발생했다. 방법은 생각 외로 간단했다. 그냥 단순하게 REGEXP_REPLACE 함수를 사용하면 된다. 이제 테스트를 한 번 해보자. 단순한 단어 변경 테스트용 데이터를 아래와 같이 생성해보았다. CREATE TABLE IF NOT EXISTS replace_test ( -- SERIAL 사용 시 postgresql은 AUTO_INCREMENT가 자동 적용됨. serial_no SERIAL PRIMARY KEY, simple_str VARCHAR(100), detail_str VARCHAR(1000) ); INSERT INTO replace_test (simple_str, detail_str) VALUES ('this', .. 2024. 2. 5.