Seren dev's blog
[Softeer/소프티어] 조립라인 - 자바[Java]

https://softeer.ai/practice/6287 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai풀이처음에는 BFS를 통해 가장 빠른 조립시간을 구하려 했다. 하지만 BFS로 수행할 시 메모리 초과가 발생했다.풀이방법에 대해 더 생각해보았더니 DP를 사용하여 해당 작업장까지의 최소 조립시간을 구하는 방식으로 풀었다.// 0 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)..

[Softeer/소프티어] 성적 평균 - 자바[Java]

https://softeer.ai/practice/6294 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai풀이누적합 배열을 사용하여 풀이하였다.코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st = new StringTokenizer(br.readLi..

article thumbnail
[Softeer/소프티어] 수퍼 바이러스 - 자바[Java]

https://softeer.ai/practice/6292 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  풀이k * (p^10n) 을 구하는 문제다.다만 k, p,가 최대 10^8이 될 수 있고 n은 10^16이 입력으로 들어올 수 있기 때문에 k * (p^10n)을 아래 풀이와 같이 직접 구하면 시간초과가 뜬다.import java.util.*;import java.io.*;public class Main{ // k * p^10n public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..

article thumbnail
[Softeer/소프티어] 강의실 배정(그리디 : Greedy) - 자바[Java]

https://softeer.ai/practice/6291 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 풀이기본적인 그리디 문제다.강의가 끝나는 시간으로 정렬빨리 끝나는 것부터 먼저 함(선택)그 다음 강의 시작시간이, 그 전 강의 종료시간보다 크거나 같으면 선택종료시간 오름차순으로 정렬한 다음, 시작시간 오름차순으로 정렬되도록 한다.로직1. 강의의 시작시간과 종료 시간을 저장하기 위한 클래스 Lecture를 만든다. Lecture는 종료시간 오름차순으로 정렬한 다음, 시작시간 오름차순으로 정렬되도록 한다.2. 강의의 개수 n을 입력받는다.3. 강의의 정보를 저장할 List lectures를 선언한다.4. n개의 강의의 시작시간과 종료시간을 입력받는다.5. lectures를 정렬한..

article thumbnail
[Softeer/소프티어] 징검다리(최장 증가 부분 수열 : LIS) - 자바[Java]

https://softeer.ai/practice/6293 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  풀이최장 증가 부분 수열 문제다.DP를 사용하여 풀 수 있으며 O(n^2) 의 시간복잡도를 가진다.DP를 사용하기 위해 돌의 개수 n만큼의 크기를 가지는 int형 1차원 배열 dp를 선언한다.dp[i] = i번째 돌이 마지막 돌일 때  철수가 밟을 수 있는 돌의 최대 개수 주의할 점dp[n-1]에 최댓값이 저장되지 않는다. 따라서 최댓값을 따로 저장하여 dp 배열의 값을 구할 때마다 최댓값을 업데이트해야 한다. 로직1. 돌의 개수 n을 입력받는다.2. 돌의 높이를 저장할 int[] stones 배열과, int[] dp 배열을 선언한다. 둘 다 크기는 n만큼 할당한다.3. 돌의..