[BOJ] 백준  2290 LCD Test (JAVA)
Algorithm/- Baekjoon2024. 2. 5. 12:00[BOJ] 백준 2290 LCD Test (JAVA)

📑 문제🌱 아이디어LCD에 표시된 숫자의 규칙을 찾고 모듈식으로 조립해서 출력하자! 하나하나 N의 크기에 맞춰서 출력하는 것보다 숫자를 구성하는 규칙을 찾고 가로줄을 기준으로 출력을 하는 게 효율적이다. 예제 출력 1을 보면 숫자를 구성하는 모듈 또는 패턴이 보인다 가장 위 부터 오른쪽 바, 왼쪽 바, 양쪽 바, 공백, 하단 바 총 5가지의 모듈이 필요하다.이 경우는 N = 2인 경우다 당연히 N 이 증가되면 그거에 맞게 가로길이는 길어질 것이다. 예를 들어하단 바는 N = 3 일 때 " --- " 이런 형태의 모듈이 요구된다. 위의 예제 출력을 보면 이런 패턴으로 숫자가 출력되는 것을 알 수 있다. 즉 해당 모듈을 이용하여 해당 숫자를 표현하기 위해  행마다 맞는 모듈을 넣고 다음 행으로 넘어가야 ..

[BOJ] 백준 2096 내려가기 (JAVA)
Algorithm/- Baekjoon2024. 1. 29. 14:00[BOJ] 백준 2096 내려가기 (JAVA)

📑 문제🌱 아이디어메모리 제한 4MB이다, 즉 메모리 초과된다면 불필요한 메모리는 줄여야 한다. 처음 풀었을 때 N = 100,000까지 모든 입력을 배열에 받고 저장했다... 그러다 보니 메모리 초과가 나서 틀렸다이 문제는 사실 입력을 저장할 필요 없다 입력되면 -> dp로 처리한다 이를 N번 반복하면 된다 이 문제는 다이내믹 프로그래밍 알고리즘을 사용한다 즉 우리는 3가지 경우에 대한 점화식을 세우면 된다!   최댓값 구하는 경우j =1 , 점화식 = dp1[1] = max(dp1[1], dp1[2])+ n1j =3 , 점화식 = dp1[3] = max(dp1[3], dp1[2])+ n3j =2 , 점화식 = dp1[2] = max(dp[1] , max(dp[2], dp[3])+ n2내려갈 수 있..

[BOJ] 백준 15663 N과 M(9) (JAVA)
Algorithm/- Baekjoon2024. 1. 29. 00:48[BOJ] 백준 15663 N과 M(9) (JAVA)

📑 문제 🌱 아이디어입력된 숫자의 모든 경우의 조합 중 중복 제거 + 사전순 정렬! 이 문제를 풀 때 모든 경우의 수를 HashSet에 넣고 정렬을 한다면 중복제거 + 사전순 출력으로 될 줄 알았다. 일단 필자는 문자열로 처리했고 문자열 정렬을 했다 하지만 제대로 정렬되지 않았다.  숫자를 문자열로 입력받고 Arrays.sort를 하면 제대로 정렬되지 않는다.그 이유는 "숫자의 사전순 정렬"과 "문자열의 사전순 정렬"의 개념이 다르다, 필자는 제대로 몰랐다.;; 입력값 = 100, 20 오름차순 정렬 시 숫자의 사전순 정렬 은 20 임으로  출력은 20 100이다.문자열의 사전순 정렬 은 20의 "2" 보다 100의 "1"이 사전 순으로 먼저이다. 즉 숫자 자체는 100이 크지만문자열 정렬 시 우선..

[BOJ] 백준 2493 탑 (JAVA)
Algorithm/- Baekjoon2024. 1. 22. 00:41[BOJ] 백준 2493 탑 (JAVA)

📑 문제 🌱 아이디어수열의 오른쪽 끝에서 왼쪽으로 탐색하면서 두 수를 비교하면서 스택에 push, pop을 한다! 이 문제를 풀기 위해서 공식을 총 2가지로 단순화했다 1. 왼쪽 숫자보다 오른쪽 숫자가 크다면 -> 스택에 push2. 왼쪽 숫자보다 오른쪽 숫자가 작다면 -> 스택에 pop 하지만 출력조건은 레이저를 수신한 탑의 인덱스를 출력하기 때문에 스택에는 인덱스 번호에 해당하는 숫자가 아닌숫자에 해당하는 인덱스 번호를 입력한다. 즉 arr1 [i]가 아니라 'i'를 스택에 입력을 해야 한다.🌱 코드 및 풀이1. 왼쪽 숫자보다 오른쪽 숫자가 크다면 -> 스택에 push   stk.push(i)를 통해 인덱스 번호 입력2. 왼쪽 숫자보다 오른쪽 숫자가 작다면 -> 스택에 pop   while을 통..

[BOJ] 백준 1913 달팽이 (JAVA)
Algorithm/- Baekjoon2024. 1. 15. 01:58[BOJ] 백준 1913 달팽이 (JAVA)

📑 문제 🌱 아이디어배열의 숫자가 시작되는 자리를 지정하고,오른쪽 상단 -> 오른쪽 하단, 오른쪽 하단 -> 왼쪽 하단, 왼쪽 하단 -> 왼쪽 상단, 왼쪽 상단 -> 오른쪽 상단으로 이동하는 규칙에 맞게 구현해 보자. 이 규칙을 찾는 건 크게 어렵지 않았다 다만 신경 써야 하는 부분은 한 칸씩 줄어들면서 탐색하는 범위를 지정하는부분이다. 여러 부분을 신경 써야 하니 코드에 주석을 달아놨으니 자세히 읽으면서 풀면 된다!  🌱 코드 및 풀이가장 처음 숫자는 배열의 0,0에서 시작한다. 줄어든 후는 1,1 그 후는 2,2 이렇게 배열중앙을 향해서 증가하는 모습을 볼 수 있다.maxN = 1이 될 때까지 반복하고 range를 통해 줄어든 범위까지 탐색할 수 있게 설정한다. 즉 우리는 가창 처음 숫자가 시작..

반응형
image