코테

문제 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 입출력 예제 phone_book return ["119", "97674223", "1195524421"] false..
문제 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 번째..
문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo", "kiki",..
스택 (Stack) /큐 (Queue) 스택과 큐는 각각 한쪽 끝에서만 데이터를 추가하고 제거하는 자료구조 데이터를 저장하고 관리하는 방식에 차이가 있음 스택 (Stack) 스택의 특징 LIFO (Last In, First Out) : 마지막에 추가된 요소가 먼저 제거 데이터를 넣는 작업을 푸시 (Push) 데이터를 빼는 작업을 팝 (Pop) 스택의 동작 스택의 최상단에 요소를 추가하거나 최상단에 요소를 제거할 수 있음 주로 함수 호출이나 재귀 알고리즘 등에 사용 스택의 예 import java.util.Stack; public class StackExample { public static void main(String[] args) { // 정수를 저장하는 스택 생성 Stack stack = new S..
해시 (Hash) Hash는 데이터를 저장하는 자료 구조 중 하나로, 특정한 함수를 사용하여 데이터를 일정한 크기의 고정된 값으로 변환하는 과정을 말합니다. 이렇게 변환된 값은 보통 “해시 코드” or “해시 값” 이라고 불립니다. 해시 함수는 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 특징이 있습니다. 해시 함수(Hash Fuction) 해시 함수는 주어진 입력에 대해 항상 동일한 해시 코드를 생성하며, 입력 데이터가 조금만 다르더라도 해시 코드가 크게 달라져야 합니다. 이러한 특성을 가진 해시 함수를 “고르게 분포되었다” 고 말합니다. 해시 함수 종류 MD5, SHA-1, SHA-256 등 특정한 용도나 특성에 맞게 다양한 종류가 존재한다. 그 중 3가지 만 간략하게 설명하겠습니다. 1...
제곱근과 합성수 간의 관계 제곱근과 합성수 간의 관계는 다음과 같습니다: 1. **제곱근과 소수 판별:** - 만약 어떤 자연수 `n`이 합성수라면, `n`의 어떤 약수는 `n`의 제곱근보다 작거나 같을 것입니다. - 예를 들어, `n`이 합성수이고 `a`가 `n`의 약수라면, `a * b = n`을 만족하는 다른 자연수 `b`가 존재합니다. - 만약 `a`와 `b` 중 하나가 `n`의 제곱근보다 작다면, 다른 하나는 반드시 제곱근보다 큽니다. 2. **소수와 합성수:** - 소수는 1과 자기 자신 이외에 약수를 갖지 않는 수입니다. - 합성수는 1과 자기 자신 이외에도 다른 약수를 갖는 수입니다. - 어떤 수가 소수가 아니라면, 반드시 합성수여야 합니다. 3. **소인수 분해:** - 어떤 수가 합성수..
정수 오버플로우 정수 오버플로우는 정수 변수가 표현할 수 있는 범위를 넘어서 값을 저장하려고 할 때 발생하는 현상입니다. 정수 데이터 타입(예: `int`, `long` 등)은 특정 비트 수로 값을 표현하므로, 표현 가능한 최대값을 넘어가면 오버플로우가 발생합니다. 예시 1. `int`의 경우: int maxValue = Integer.MAX_VALUE; // 2147483647 // 정상적인 범위 내의 덧셈 int sum1 = maxValue + 1; // -2147483648 (Integer.MIN_VALUE) // 정상적인 범위 내의 뺄셈 int subtract1 = Integer.MIN_VALUE - 1; // 2147483647 (Integer.MAX_VALUE) 2. `long`의 경우: lo..
BigInteger `BigInteger`는 Java에서 정수의 임의 정밀도(arbitrary-precision)를 가지는 클래스입니다. 이 클래스는 매우 큰 크기의 정수를 표현할 수 있어서, int나 long의 범위를 초과하는 정수 연산을 지원합니다. BigInteger 클래스 `BigInteger` 클래스는 java.math 패키지에 속해 있으며, 여러 연산을 지원합니다. 주요 메서드 중 일부는 다음과 같습니다: 1. `add(BigInteger val)`: 현재 `BigInteger` 객체에 주어진 `BigInteger` 값을 더합니다. 2. `subtract(BigInteger val)`: 현재 `BigInteger` 객체에서 주어진 `BigInteger` 값을 뺍니다. 3. `multiply(B..