본문 바로가기

728x90

프로그래머스(Java)

(192)
[프로그래머스] 네트워크 코드 힌트:그래프 탐색의 필요성:각 컴퓨터를 노드로 보고, 컴퓨터 간의 연결을 간선으로 생각하면, 네트워크의 수를 찾는 문제는 그래프에서 연결 요소의 수를 찾는 문제로 볼 수 있습니다.깊이 우선 탐색(DFS) 또는 너비 우선 탐색(BFS):한 컴퓨터에서 시작해 연결된 모든 컴퓨터를 탐색하고, 이미 탐색한 컴퓨터는 다시 탐색하지 않도록 표시합니다.새로운 컴퓨터에서 탐색을 시작할 때마다 새로운 네트워크가 하나 발견됩니다.방문 여부를 기록하는 배열:배열을 사용해 각 컴퓨터가 이미 탐색된 네트워크에 포함되어 있는지를 기록합니다.정답은 더보기 클릭더보기import java.util.*;class Solution { public int solution(int n, int[][] computers) { ..
[프로그래머스] 제일 작은 수 제거하기 힌트배열 크기 체크: 배열의 크기가 1일 때 특별히 처리해야 합니다.최소 값 인덱스 찾기: 배열을 순회하여 최소 값을 찾고 그 인덱스를 기록합니다.결과 배열 생성: 최소 값을 제외한 나머지 원소를 담을 배열을 생성합니다.값 복사: 최소 값의 인덱스를 제외하고 나머지 원소를 결과 배열에 복사합니다.  정답은 더보기 클릭더보기class Solution { public int[] solution(int[] arr) { // 배열 크기가 1일 때 if (arr.length == 1) { arr[0] = -1; // 배열의 유일한 원소를 -1로 설정 return arr; // 변경된 배열 반환 } // 최소 숫자가 있는..
[프로그래머스] 나머지가 1이 되는 수 찾기 힌트범위 설정: 2부터 n-1까지의 숫자에 대해 나머지를 검사합니다. 1은 모든 수의 약수이므로 제외하고, n 자신도 제외합니다.나머지 연산: n % i == 1 조건을 만족하는 i를 찾습니다.최소값 찾기: 조건을 만족하는 가장 작은 i를 찾으면 바로 break로 반복을 종료하여 효율성을 높입니다.반환 값: 조건을 만족하는 첫 번째 i를 result에 저장하고 반환합니다. 정답은 더보기 클릭더보기class Solution { public int solution(int n) { int result = 0; // 결과를 저장할 변수 초기화 // 2부터 n-1까지의 숫자 i에 대해 반복 for (int i = 2; i
[프로그래머스] 콜라츠 추측 힌트무한 루프와 조건문: 무한 루프를 사용하고 조건문을 통해 특정 상황에서 루프를 종료하는 구조입니다.작업 횟수: 각 작업마다 result를 증가시켜 작업 횟수를 기록합니다.짝수와 홀수 처리: num이 짝수인지 홀수인지에 따라 다른 처리를 합니다.최종 반환 값: 작업이 성공적으로 끝나 num이 1이 되면 result를 반환하고, 그렇지 않으면 -1을 반환하여 작업이 실패했음을 나타냅니다.   정답은 더보기 클릭더보기class Solution { public int solution(long num) { int result = 0; // 작업 횟수를 저장할 변수 while (true) { // num이 1이 되거나 작업 횟수가 500 이상이 되..
[프로그래머스] 숫자 찾기 코드힌트문자열 변환: num을 문자열로 변환하면 각 자리 숫자를 쉽게 비교할 수 있습니다.문자에서 숫자 변환: strNum.charAt(i) - '0'는 문자 '0'을 기준으로 현재 문자를 숫자로 변환하는 일반적인 방법입니다.1-based 인덱스: 문제에서 요구하는 1-based 인덱스(1부터 시작하는 인덱스)를 반환하기 위해, 찾은 인덱스에 1을 더해줍니다.빠른 반환: k를 찾으면 바로 결과를 반환하여 불필요한 반복을 방지합니다.  정답은 더보기 클릭더보기class Solution { public int solution(int num, int k) { int result = -1; // 결과를 저장할 변수, 초기값은 -1 String strNu..
[프로그래머스] 문자열 여러 번 뒤집기 코드 힌트쿼리 순회주어진 queries 배열을 순회하며 각 쿼리에서 시작 인덱스 s와 끝 인덱스 e를 추출합니다.앞부분 자르기my_string에서 시작 인덱스 s 이전의 문자열을 저장합니다.뒤집을 부분 문자열 생성String을 사용하여 my_string에서 s부터 e까지의 문자열을 뒤집습니다.문자열 뒤집는 2가지 방법 : https://shs00925.tistory.com/60뒷부분 자르기my_string에서 끝 인덱스 e 이후의 문자열을 저장합니다.새로운 문자열 생성s이전의 문자열, 뒤집은 문자열, e이후의 문자열을 합쳐서 새로운 my_string을 만듭니다.최종 결과 반환모든 쿼리를 처리한 후 최종 결과 문자열을 반환합니다. 정답은 더보기 클릭더보기1. String으로 문제 풀기class Soluti..
[프로그래머스] 연속된 수의 합 코드 힌트결과 배열 선언num 개의 연속된 숫자를 저장할 배열을 선언합니다.시작 숫자 계산주어진 total을 num으로 나누어 평균 값을 구합니다.평균 값에서 num의 절반을 뺀 값을 시작 숫자로 설정합니다.만약 total이 num으로 정확히 나누어 떨어지지 않으면 시작 숫자를 1 증가시킵니다.연속된 숫자 생성시작 숫자부터 num 개의 연속된 숫자를 생성하여 배열에 저장합니다.결과 반환생성된 배열을 반환합니다. 정답은 더보기 클릭더보기class Solution { public int[] solution(int num, int total) { // 결과를 저장할 배열 선언 int[] result = new int[num]; // 시작 숫자 계산 ..
[프로그래머스] 겹치는 선분의 길이 문제 힌트선분이 겹치는지 확인하는 조건을 파악하기두 선분 A와 B가 주어졌을 때, A와 B가 겹치는지 확인하려면 다음 조건을 만족해야 합니다:A의 가장 오른쪽 위치가 B의 가장 왼쪽 위치보다 크고A의 가장 왼쪽 위치가 B의 가장 오른쪽 위치보다 작아야 합니다.예시:[-3, 0]와 [-1, 5]라는 선분이 있을 때, -1 ~ 0 구간에서 겹치는 것을 알 수 있습니다.A의 가장 오른쪽 위치 0이 B의 가장 왼쪽 위치 -1보다 크고,A의 가장 왼쪽 위치 -3이 B의 가장 오른쪽 위치 5보다 작습니다.데이터 구조 선택선분의 각 위치에서 겹치는 개수를 기록하기 위해 HashMap을 사용할 수 있습니다. HashMap은 키-값 쌍으로 데이터를 저장하며, 특정 위치에서 선분이 몇 개 겹치는지를 기록하기에 적합합니다...

728x90