본문 바로가기

알고리즘 풀이56

[BOJ] 23290. 마법사 상어와 복제 - JAVA 🔗 문제 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 👨🏻‍💻 풀이 및 코드 문제 유형 및 난이도 : 구현, 시뮬레이션 / G1 풀이 시뮬레이션 문제라서 차근차근 해결하면서 풀었다. 1. 입력 ① 입력으로 들어오는 물고기들의 위치와 방향을 List 에 담는다. class Fish { int x, y;// 위치 int dir;// 방향 } List fishes = new ArrayList(); fishes.add(new Fish(x, y, dir); ② 상어의 위치를 받는다... 2023. 4. 24.
[코드트리] 포탑 부수기 - Java (삼성SW역량테스트 2023 상반기 오전 1번) 🔗 문제 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 👨🏻‍💻 풀이 및 코드 문제 유형 및 난이도 : BFS / G1 풀이 느낀 점 코드가 길어서 어디서 틀렸는지 찾는게 힘들었다.. 해결하는데 5시간?넘게 걸린 것 같다. 틀린 부분 시점 k를 time++로 처리 bomb에서 이미 공격받은 자리는 공격하면 안됨 (가장 자리에서 막히면 반대편으로 돌아오기 때문에 겹칠 수 있다) 다시 포탑 list를 넣을 때 새로 Turret 객체를 생성해서 넣으면 안 된다. map[i][j] 로 넣어야 한다. 새로 객체를 만들어서 넣으려면 map[i][j] 에도 넣어.. 2023. 4. 17.
[BOJ] 11660. 구간 합 구하기 5 - JAVA 🔗 문제 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 💻 풀이 및 코드 문제 유형 : 다이나믹 프로그래밍, 누적 합 2차원 배열에서 시작 지점과 끝 지점 사이의 값들의 합을 구하는 문제 풀이 총 2가지 방법으로 풀었다. 처음에 푼 방법으로 1412ms 가 나왔는데 채점 현황을 보니 900ms 로 푼 사람이 있어서 다른 풀이 방식을 찾아봐서 다시 풀었다. 첫 번째 풀이 방법이 두 번째보다 더 쉽지만 .. 2023. 3. 16.
[BOJ] 10986. 나머지 합 - JAVA 🔗 문제 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 💻 풀이 및 코드 문제 유형 : 수학, 누적합 주어진 배열 중 구간(i, j) 합 이 M 으로 나누어 떨어져는 구간의 갯수를 구하는 문제 풀이 시간 복잡도 : O (N) 문제를 풀기 앞서, 아래의 모듈러 연산의 분배 법칙을 알고 있어야 한다. 문제에 나와있는 '연속된 부분 구간의 합이 M 으로 나누어 떨어지는' 이라는 의미를 생각해보자. 어떠한 구간 [a, b] 에 대해 '[a, b] 구간합 == [1, b.. 2023. 3. 15.
[BOJ] 1912. 연속합 - JAVA 🔗 문제 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 💻 풀이 및 코드 문제 유형 : 다이나믹 프로그래밍 요약 : 연속된 구간의 합의 최댓값 풀이 DP 를 풀 때 나는 N 개의 숫자가 주어졌을 때 N 번째의 해당하는 답을 구하기 위해서 첫번째만 숫자가 주어졌을 때, 다음 두 번째 숫자가 주어졌을 때, 세번째 숫자가 주어졌을 때의 답을 차례대로 유추한다. 예제를 보면 [10, -4, 3, 1, 5, 6, -35, 12, 21, -1] 가 주어졌다. 10.. 2023. 3. 13.
[BOJ] 6549. 히스토그램에서 가장 큰 사각형 (세그먼트 트리) 🔗 문제 https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 💻 풀이 및 코드 문제 유형 : 분할정복, 세그먼트 트리 히스토그램에서 가장 큰 사각형의 넓이를 찾아 출력하는 문제 (히스토그램: 직사각형 여러 개가 아래쪽에 정렬되어 있는 도형) 풀이 이 문제는 풀 수 있는 방법이 여러 가지가 있다. 1. 분할 정복 2. 분할 정복 + 세그먼트 트리 3. 스택 나는 1번으로 풀다가 시간 초과가 나.. 2023. 3. 6.