목록전체 글 (164)
개발의변화
상반기가 오기 전에 방심하다가 제대로 두들겨 맞았다... 개념을 공부 안하기는 커녕 문제도 제대로 보지 않고 서술형을 적지않나.... 늦잠을 자서 피곤해서 시험시간에 40분 자지 않나.... 문해력이 딸리나 문제를 이해를 못하지 않았나 정신을 크게 차렸던 계기를 가진 것 같다.. 오전의 본 https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net 이 문제는 당연히 보자마자 만나는 백조의 위치를 최신화해서 다가가야 한다는 것을..
진짜....... 아이디어가 생각나지도 않고 기준점을 어떻게 잡아야 하는지도 감이 전혀 오지 않았다. 일주일 본다고 달라지진 않을 것 같아서 봐로 답지를 확인했다... 찾아보니 미니맥스 알고리즘, 알파-베타 가지치기 정말 생소한 알고리즘을 활용한 것인데 인공지능 알고리즘였다.. 키포인트는 내가 승리하거나 패배하는 것은 결국 상대방이 패배하거나 승리하는 것에 기인된다라는 것이 중점이었던 것 같다. 오랜만에 벽이 느껴져서 작성해본다... // 2022 KAKAO BLIND RECRUITMENT - 사라지는 발판 // 백트래킹 class Solution7_LSH { public static int[] dx = {-1, 1, 0, 0}; public static int[] dy = {0, 0, -1, 1}; p..
https://school.programmers.co.kr/learn/courses/30/lessons/132266 다익스트라 알고리즘을 활용해야 했다. 다 까먹은 다익스트라 알고리즘을 하나하나 다시 만드는데 있어서 시간이 오래 걸리진 않았다. 블로그 포스팅한 이유는 Comparable, Comparator를 활용한 우선순위큐 만드는 것을 잊지않을려고 올린다. import java.util.*; class Solution { public int[] solution(int n, int[][] roads, int[] sources, int destination) { int[] answer = new int [sources.length]; ArrayList [] arr = new ArrayList[n+1]; ..
https://school.programmers.co.kr/learn/courses/30/lessons/136797 문제 방향을 3번이나 꺾어서 풀었다. 첫 번째 방향은 완전탐색이었으나 2의 100000승 연산으로 결국 밑에 5개 케이스가 시간초과가 터졌고 두 번째 방향은 그리디였다. 왼손 오른손에서 가장 가까운 곳을 선택하고 같을 때는 왼손 클릭, 오른손 클릭 두 번의 케이스를 다 해결하는 방식이었다. -> 하지만 이 또한 완벽한 그리디가 아니었고 5개의 시간초과와 2개의 케이스에서 오류가 발생했다. 결국 마지막으로 DP를 활용해야 했고 숫자의 개수 10 왼손 오른손 실행 하므로 10 * 10 그리고 numbers의 길이가 100000이었으므로 10 * 10 * 100000번의 실행을 한다. O(1억)..
Arrays.sort(arr, new Comparator() { @Override public int compare(int[] o1, int[] o2) { int answer = o2[1] - o1[1]; if (answer == 0) { answer = o1[0] - o2[0]; } return answer; } }); https://school.programmers.co.kr/learn/courses/30/lessons/138475?language=java [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmer..
https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(n, m, x, y, r, c, k) { let answer = "z".repeat(k) //미로의 세로길이 n, 미로의 가로길이 m, //출발위치 x,y //탈출위치 r,c //탈출이동 거리 k x = x - 1 y = y - 1 r = r - 1 c = c - 1 if (Math.abs(Math.abs(x-r)+Math.abs(y-c)-k) % 2 == 1 |..
https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현을 하는데 있어서 어떠한 저장방식을 사용하느냐에 대한 깊은 고민이 필요한 문제였고 또한 구현이기에 디테일한 방식을 활용해야 했던 문제였던 것 같았다. UPDATE에 대한 문자열을 저장하는 이차원 배열과 유니온파인드 형식을 활용하여 병합데이터를 획득한 방식으로 활용했다. import java.util.*; public class Solution { static int N = 51; static..
https://school.programmers.co.kr/learn/courses/30/lessons/150367 트리만 보면 겁을 먹는 자기 자신을 반성하며 2시간 동안 고민하여 풀었다. 결국 완전한 이진트리이기 때문에 받아오는 숫자의 노드 개수를 1,3,7,15 이렇게 맞춰줘야했다. public static long findDepth(long num) { long depth = 0; long plus = 1; long count = 0; while (num > depth) { depth = depth + plus; plus*=2; count++; } depth = 0; plus = 1; while (count > depth) { depth = depth + plus; plus *= 2; } retu..