본문 바로가기

알고리즘31

코딩테스트 언어 Java->Python 변경 기록 목차 LIST 코딩 테스트에서 사용하는 언어를 Java에서 Python으로 바꿔보려고 한다. 그래서 가벼운 문제들 풀면서 감잡는 과정 기록 1) 백준 2606번 바이러스 import sys from collections import deque n = int(input()) m = int(input()) table = [[0 for _ in range(101)] for _ in range(101)] for _ in range(m): x, y = map(int, input().split()) table[x][y] = 1 # 이부분! 때문에 처음에 틀렸었음 table[y][x] = 1 result = 0 visited = [0] * 101 stack = deque() stack.append(1) visited.. 2024. 3. 14.
[프로그래머스] 테이블 해시 함수 Java 풀이 목차 LIST 최종 결과 import java.util.*; public class Main { public static void main(String[] args) { int[][] data = {{2,2,6}, {1,5,10}, {4,2,9}, {3,8,3}}; int res = solution(data, 2, 2, 3); System.out.print(res); } public static int solution(int[][] data, int col, int row_begin, int row_end) { Arrays.sort(data, (o1, o2) ->{ if(o1[col-1] == o2[col-1]) { return Integer.compare(o2[0], o1[0]); } return In.. 2023. 7. 30.
[프로그래머스] 숫자 변환하기 Java 풀이 첫 번째 풀이 exists를 사용하지 않으면 시간초과가 뜬다. 이전에 한번이라도 큐에 들어갔던 숫자면 skip. Node 를 쓰고싶지 않았는데, 다른 방법이 생각나지 않아서 사용했다. 밑에 풀이에선 배열로 수정됨 import java.util.*; public class Main { public static void main(String[] args) { int res = solution(2, 5, 4); System.out.print(res); } public static int solution(int x, int y, int n) { if (x == y) return 0; Queue queue = new LinkedList(); int[] exists = new int[1000001]; queue.a.. 2023. 7. 28.
[프로그래머스] 뒤에 있는 큰 수 찾기 Java 풀이 조건 : 4 ≤ numbers의 길이 ≤ 1,000,000 위 조건때문에 시간 복잡도가 O(n^2)가 되면 타임아웃이 납니다. 따라서 이중포문 사용하면 안됨 public class Main { public static void main(String[] args) { int[] numbers = {9, 1, 5, 3, 6, 2}; int[] res = solution(numbers); for (int r : res) { System.out.print(r); } } public static int[] solution(int[] numbers) { int N = numbers.length; int[] results = new int[N]; Stack stack = new Stack(); stack.push(n.. 2023. 5. 28.
[프로그래머스] 과제 진행하기 Java 풀이 한줄 요약 : HH:mm 포맷이 나오면 '시간*60+분'을 사용한다. stack사용 첫 번째 풀이) 이 풀이로 통과 했으나, 다른 사람들은 시간 다루는 부분을 어떻게 했는지 확인해봤다. 나는 12:20 과 같이 시간으로 들어오는 값을 HH:mm 타입의 dateformat으로 계산했는데, 다른사람들은 '시간*60+분' 으로 minutes로 변경해서 start를 저장해서 사용하는 것을 확인했다. 나중에 문제 풀 때 도움이 많이 될 것 같아서 이 방법으로 변경하기로 결정 import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; public class Main { public static void mai.. 2023. 5. 27.
[프로그래머스] 리코쳇 로봇 Java 풀이 개인적으로 좋았던 문제 bfs+dp를 정석으로 사용할 수 있다. 알고리즘을 풀 때 map과 방향이 나오면 dir_x, dir_y는 무조건 사용해 주는게 좋다. 아래 코드에서는 n = board.length, m = board[0].length() 이런식으로 빼주면 더 깔끔해질듯 bfs를 활용한 탐색을 할 때 주의해야 하는 점 1. visited 사용 2. map을 벗어나지 않게 조건 (x >= 0 && x = 0 && y < board[0].length()) 여기까지는 dp+bfs 기본이고 문제에 맞게 조건을 더 추가해주면 된다. import java.util.LinkedList; import java.util.Queue; public class Main { publ.. 2023. 5. 25.
반응형