프로그래머스(Java) (192) 썸네일형 리스트형 [프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 힌트:이 문제는 문자열의 특정 패턴을 찾아 그 패턴이 마지막으로 나타나는 위치까지의 부분 문자열을 추출하는 문제입니다. 이를 해결하기 위해 세 가지 중요한 메소드를 사용합니다:substring() 메소드:설명: 이 메소드는 문자열의 지정된 시작 인덱스에서 끝까지 또는 지정된 끝 인덱스 전까지의 부분 문자열을 반환합니다. 예를 들어, "hello".substring(1, 4)는 "ell"을 반환합니다.사용: 이 문제에서는 마지막으로 나타난 패턴까지의 문자열을 추출하는 데 사용됩니다.lastIndexOf() 메소드:설명: 이 메소드는 문자열에서 지정된 패턴이 마지막으로 나타나는 위치의 인덱스를 반환합니다. 만약 해당 패턴이 문자열에 없으면 -1을 반환합니다. 예를 들어, "hello world".lastIn.. [프로그래머스] 행렬의 곱셈 코드 힌트행렬의 크기 설정하기결과 행렬의 크기를 설정할 때, 행렬 곱셈의 규칙에 따라 결과 행렬의 행 수는 첫 번째 행렬의 행 수와 동일하고, 열 수는 두 번째 행렬의 열 수와 동일해야 합니다.이렇게 설정한 결과 행렬에 각 요소를 저장하고 계산할 수 있습니다.행렬 곱셈 원리 이해하기행렬 곱셈에서는 첫 번째 행렬의 행과 두 번째 행렬의 열을 곱하여 새로운 행렬을 생성합니다.각 결과 행렬의 요소는 첫 번째 행렬의 해당 행과 두 번째 행렬의 해당 열의 곱을 모두 더한 값입니다.계산 방법각 결과 행렬의 요소를 계산하기 위해, 첫 번째 행렬의 해당 행과 두 번째 행렬의 해당 열을 곱한 뒤, 그 결과를 합산합니다.이를 위해 반복문을 사용하여 각 요소를 계산하고 결과를 저장합니다.예시 설명만약 첫 번째 행렬이 2x3.. [프로그래머스] n^2 배열 자르기 코드 힌트 0 번째1 번째2 번째3 번째4 번째5 번째0 번째1234561 번째2234562 번째3334563 번째4444564 번째5555565 번째666666 1차원 배열로 2차원 배열 접근하기주어진 문제는 실제로 2차원 배열처럼 보이지만, 이를 1차원 배열로 접근할 수 있습니다.2차원 배열의 인덱스를 1차원 배열로 변환할 때, i / n은 행(row)을 나타내고, i % n은 열(col)을 나타냅니다.예를 들어, n = 3일 때, i = 4인 경우 (4 / 3)은 행(1), (4 % 3)은 열(1)이 됩니다.규칙 찾기2차원 배열에서 각 위치 (row, col)의 값은 Math.max(row, col) + 1로 결정됩니다.이 규칙을 통해, 1차원 배열의 각 위치에 대해 계산된 값을 result 배열에.. [프로그래머스] 1로 만들기 코드 힌트초기화result 변수는 모든 연산의 총 횟수를 기록하기 위해 사용됩니다.배열 요소 순회num_list 배열의 각 요소를 순회하면서, 각 숫자가 1이 될 때까지 필요한 연산 횟수를 계산합니다.배열을 순회할 땐 for문 혹은 forEach문을 사용하여 배열의 요소에 접근합니다.배열 요소를 1이 될 때까지 반복은 while문을 사용하여 n > 1일 때 반복하게 합니다.짝수와 홀수 처리짝수일 때: 해당 숫자를 절반으로 나눕니다. 예를 들어, 8 -> 4 -> 2 -> 1과 같은 과정입니다.홀수일 때: 먼저 1을 뺀 후 절반으로 나누어 짝수로 만듭니다. 예를 들어, 7 -> 6 -> 3 -> 2 -> 1과 같은 과정입니다.연산 횟수 누적각 숫자에 대해 연산이 수행될 때마다 result 변수를 증가시킵니.. [프로그래머스] 조건에 맞게 수열 변환하기 2 코드 힌트초기화와 플래그 설정result 변수는 연산 횟수를 기록하며, flag는 배열의 변화를 감지하는 데 사용됩니다.이 반복문은 배열이 더 이상 변하지 않을 때까지 실행됩니다.조건에 따른 배열 요소 수정첫 번째 조건: 배열 요소가 50 이상이면서 짝수일 때, 해당 요소를 절반으로 나눕니다.두 번째 조건: 배열 요소가 50 미만이면서 홀수일 때, 해당 요소를 두 배로 하고 1을 더합니다.각 조건이 만족되면, 배열이 변한 것이므로 flag를 false로 설정하여 반복을 계속하도록 합니다.반복 횟수 증가매번 반복이 끝날 때마다 result를 증가시켜 연산 횟수를 기록합니다.최종 결과 반환마지막 반복이 완료된 후에는 실제 연산 횟수에서 1을 뺀 값을 반환합니다. 이는 마지막 반복에서 배열에 변화가 없었기 때.. [프로그래머스] 신고 결과 받기 코드 힌트저는 Set을 사용하지 않고 boolean[][] 을 사용하여 중복을 제거했습니다. 만약 Set으로 제거하는 것을 원하시는 분은 다른 글을 참고하시는 것을 추천합니다.ID와 인덱스 매핑하기(HashMap )사용자 ID 목록을 기반으로, 각 사용자의 ID와 해당 인덱스를 연결합니다. 이렇게 하면 신고 내역을 처리할 때, 사용자 이름 대신 인덱스를 사용해 작업할 수 있어 효율적입니다.중복 신고 방지(boolean[][] : [신고한 사람 index][신고당한 사람 index])신고 내역을 처리할 때, 동일한 사용자가 같은 사람을 여러 번 신고하는 경우, 중복 신고를 피하기 위해 신고가 이미 처리된 적이 있는지 확인합니다.중복 신고를 방지하는 배열을 사용하여, 만약 이전에 신고된 적이 없다면 신고 .. [프로그래머스] 빈 배열에 추가, 삭제하기 코드 힌트ArrayList 사용하기:ArrayList는 동적으로 크기가 변하는 배열입니다. 요소를 추가하거나 제거할 때 유용합니다. ArrayList를 사용하면 리스트의 끝에 새로운 요소를 추가하거나, 리스트에서 기존의 요소를 쉽게 제거할 수 있습니다.for 문으로 배열 요소 순회하기:for 문을 사용하여 배열의 각 요소를 순차적으로 처리합니다. 배열의 길이만큼 반복하여 각 요소를 확인하고 필요한 작업을 수행합니다.true일 때의 처리:만약 flag[i]가 true일 때는, arr[i]의 값을 리스트에 추가합니다.예시: arr[i]가 3일 때, 리스트에 3을 2배인 6번 추가합니다.설명: add(element) 메소드를 사용하여 요소를 리스트의 끝에 추가합니다. 예를 들어, add(3)을 하면 리스트의 .. [프로그래머스] 날짜 비교하기 코드 힌트날짜 배열 비교:두 날짜 배열 date1과 date2는 [year, month, day] 형식입니다.이 배열들을 순서대로 비교합니다.연도 비교:배열의 첫 번째 요소(연도)를 비교합니다.date1의 연도가 date2의 연도보다 작으면, date1이 이전 날짜이므로 1을 반환합니다.반대로, date1의 연도가 크면 0을 반환합니다.월 비교:연도가 같을 경우, 두 번째 요소(월)를 비교합니다.date1의 월이 date2의 월보다 작으면 1을 반환합니다.date1의 월이 크면 0을 반환합니다.일 비교:연도와 월이 모두 같을 경우, 세 번째 요소(일)를 비교합니다.date1의 일이 date2의 일보다 작으면 1을 반환합니다.date1의 일이 크면 0을 반환합니다.모든 요소가 같을 경우:연도, 월, 일이 .. 이전 1 ··· 9 10 11 12 13 14 15 ··· 24 다음