본문 바로가기

전체 글

(435)
[자료구조] Array 배열 배열이란?배열은 동일한 타입의 여러 값을 하나의 변수에 묶어서 저장하는 자료구조입니다. 각 값을 별도로 저장하는 대신, 하나의 변수로 여러 값을 관리할 수 있습니다. 배열의 특징크기 조정 불가배열은 선언된 순간부터 크기를 변경할 수 없습니다. 크기를 변경하고 싶다면 새로운 배열을 생성한 후, 기존 배열의 요소를 새 배열에 복사해야 합니다.요소에 빠른 접근배열은 인덱스를 통해 각 요소에 빠르게 접근할 수 있습니다. 요소 접근의 시간 복잡도는 O(1)로 매우 빠릅니다. 배열은 반복문을 사용하여 요소에 쉽게 접근할 수 있는 자료구조입니다.인덱스는 0부터 시작배열의 인덱스는 0부터 시작합니다. 즉, 배열의 첫 번째 요소는 인덱스 0에 위치하며, 마지막 요소는 배열 크기에서 1을 뺀 인덱스에 위치합니다.배열의 마..
[알고리즘] 효율적으로 소수를 구하는 방법 (Java 예제 포함) 소수란?소수는 1과 자기 자신 외에는 약수가 없는 자연수입니다. 즉, 1과 자기 자신만으로 나누어떨어지는 숫자를 말합니다.예시2, 3, 5, 7, 11 등은 소수입니다.4, 6, 8, 9, 10 등은 소수가 아닙니다. (다양한 약수를 가지고 있기 때문입니다.)약수란?약수는 어떤 수를 나누어떨어지게 하는 수를 의미합니다. 즉, 주어진 수를 나누었을 때 나머지가 0이 되는 수입니다.예시12의 약수: 1, 2, 3, 4, 6, 12소수를 구하는 알고리즘소수를 판별하기 위해서는 주어진 수가 약수를 몇 개 가지고 있는지 확인해야 합니다. 소수의 경우 약수가 1과 자기 자신만 있어야 합니다.기본적인 소수 판별다음 코드는 1부터 n까지의 모든 약수를 찾는 방법을 사용한 소수 판별 방법입니다.public class M..
[프로그래머스] 등수 매기기 코드 힌트평균 점수 계산:각 학생의 평균 점수를 계산하려면, 학생의 각 과목 점수를 합산한 후, 과목 수로 나누어 평균을 구합니다.이를 위해 2중 for 루프를 사용하여 각 학생의 점수를 순회하고 평균을 계산합니다.평균 점수를 정렬하여 순위 매기기:평균 점수를 저장한 배열을 List로 변환하여 정렬합니다.Collections.sort와 Collections.reverseOrder를 사용하여 내림차순으로 정렬합니다.순위 부여:정렬된 리스트에서 각 평균 점수의 인덱스를 찾고, 이 인덱스에 1을 더하여 순위를 매깁니다.List.indexOf 메소드를 사용하여 평균 점수의 위치를 찾아 순위를 계산합니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { public i..
[프로그래머스] 로그인 성공? 코드 힌트HashMap 사용하기:HashMap을 사용하지 않고, for 루프를 사용하여 사용자 정보를 직접 검색할 수도 있습니다.HashMap을 사용하면 사용자 정보를 효율적으로 저장하고 검색할 수 있습니다.HashMap을 사용하여 사용자 ID를 키로, 비밀번호를 값으로 저장합니다.데이터베이스 배열 순회:db 배열을 순회하면서 사용자 ID와 비밀번호를 HashMap에 추가합니다.각 사용자의 ID를 키로, 비밀번호를 값으로 저장하여 나중에 쉽게 검색할 수 있습니다.비밀번호 확인:id_pw[0] (사용자 ID)를 키로 HashMap에서 비밀번호를 검색합니다.비밀번호가 존재하지 않으면 "fail"을 반환합니다.비밀번호가 다르면 "wrong pw"를 반환합니다.비밀번호가 맞으면 "login"을 반환합니다.  정..
[프로그래머스] OX퀴즈 코드 힌트문제 구문 분리:각 문제 문자열을 공백(" ")을 기준으로 분리하여 피연산자, 연산자, 예상 결과를 추출합니다.예를 들어, "3 + 4 = 7"을 "3", "+", "4", "7"로 분리합니다.연산자에 따른 연산 수행:연산자를 확인하고, 적절한 산술 연산(덧셈 또는 뺄셈)을 수행하여 결과를 계산합니다."+" 연산자는 덧셈을 수행하고, "-" 연산자는 뺄셈을 수행합니다.결과 비교 및 저장:계산한 결과가 예상 결과와 일치하는지 비교합니다.결과가 일치하면 "O"를, 그렇지 않으면 "X"를 결과 배열에 저장합니다.결과 배열 반환:최종적으로 각 문제에 대한 결과를 포함하는 배열을 반환합니다. 정답은 더보기 클릭더보기class Solution { public String[] solution(Strin..
[프로그래머스] 외계어 사전 코드 힌트spell 배열의 문자 조합:spell 배열을 일일이 조합해도 좋지만, 사실 중요한 것은 spell 배열에 있는 각 알파벳의 개수입니다.이를 위해 new int[26] 배열을 사용하여 알파벳의 개수를 세고, 이를 기반으로 다른 단어와 비교할 수 있습니다.dic 배열의 각 단어에서 알파벳 개수 카운트:spell에서 사용한 것과 동일한 방식으로, dic 배열의 각 단어에서도 알파벳의 개수를 카운트합니다.주의할 점은 각 단어를 비교할 때마다, 카운트 배열을 초기화해야 한다는 것입니다. 그렇지 않으면 이전 단어의 알파벳 개수가 남아 있을 수 있습니다.배열 비교하기:두 배열의 알파벳 개수를 비교할 때, 직접 for 문을 작성할 수도 있지만, Java에서 제공하는 Arrays.equals() 메소드를 사용..
[프로그래머스] k진수에서 소수 개수 구하기 코드 힌트진법 변환:주어진 수를 k진법으로 변환해야 합니다. 변환 과정에서는 n을 k로 나눈 나머지를 문자열에 계속 추가하고, n을 k로 나누는 과정을 반복합니다. n이 k보다 작아지면 마지막 몫을 추가하고, 최종 문자열을 reverse하여 반환합니다.조건에 맞는 소수 찾기:문제의 핵심은 진법 변환 후 나온 숫자들 중에서 소수를 찾는 것입니다. 이를 위해 변환된 문자열을 '0'을 기준으로 split() 하여 숫자 배열로 나눈 다음, 각 숫자가 소수인지 확인해야 합니다.소수 판별:각 숫자가 소수인지 확인하는 방법은 간단합니다. 숫자 1은 소수가 아니므로 바로 제외하고, 2부터 해당 숫자의 제곱근까지의 수로 나누어지지 않는지 확인합니다. 나누어지는 숫자가 없으면 소수입니다.진법 변환 후 소수 개수 계산:입력..
[프로그래머스] 평행 코드 힌트두 선이 평행하다는 말은 같은 기울기를 가지고 있다는 의미입니다. 즉, 기울기를 구하는 문제입니다.기울기 계산:주어진 두 점 사이의 기울기를 계산하는 함수입니다. 기울기는 두 점의 y좌표 차이를 x좌표 차이로 나누어 계산됩니다.기울기 계산 시, double 형을 사용하여 정확한 비교를 위해 형 변환을 적용합니다.평행 여부 확인:주어진 4개의 점이 주어졌을 때, 각각의 두 쌍의 선분이 평행한지를 확인합니다. 이때, 세 가지 경우의 선분 쌍을 고려합니다.두 선분의 기울기가 같으면 해당 선분들은 평행하므로, 이때 1을 반환합니다.결과 반환:모든 경우의 선분 쌍을 비교한 후에도 평행하지 않으면 0을 반환합니다.  정답은 더보기 클릭더보기class Solution { // 주어진 네 개의 점이 이루..