전체 글 27

유용한 함수들(Java) (2024-06-19)

1. String 클래스 메서드length(): 문자열의 길이를 반환합니다.charAt(int index): 특정 인덱스에 있는 문자를 반환합니다.substring(int beginIndex, int endIndex): 문자열의 부분 문자열을 반환합니다.indexOf(String str): 특정 문자열의 인덱스를 반환합니다.equals(Object anObject): 두 문자열이 같은지를 비교합니다.replace(char oldChar, char newChar): 특정 문자를 다른 문자로 교체합니다.split(String regex): 정규 표현식에 따라 문자열을 분할합니다.toUpperCase(), toLowerCase(): 문자열을 대문자/소문자로 변환합니다.trim(): 문자열의 양쪽 끝에 있는 공..

TIL(사전캠프) 2024.06.19

알고리즘 코드카타. 두 정수의 합(2024-06-18)

문제 요약 : 두 정수 a b가 주어지고 a ~ b 사이의 모든 정수의 합을 구하라 이 문제는 for문으로 a부터 b까지 하나씩 더하면 문제는 해결된다.그러나 이는 단순한 방법이며 숫자가 커질수록 시간복잡도가 커진다. O(n)인 연산을 O(1)로 낮추는 방법이 있다. 등차수열의 합 공식을 사용하면 된다.  등차수열을 이용한 풀이)여기서 n은 항의 개수, a는 첫 번째 항, l은 마지막 항이다. 등차수열의 합의 공식을 설명하기엔 너무 길어지므로 따로 공부해보는것이 좋을것이다. 이렇게 코드를 개선하면 시간복잡도를 획기적으로 개선할 수 있다.

TIL(사전캠프) 2024.06.18

알고리즘 코드카타. 정수 제곱근 판별(2024-06-13)

문제 요약 : 정수n을 받고 n의 제곱근이 양의 정수라면 그 제곱근을+1한 뒤, 제곱을 해서 반환한다. 제곱근이 양의 정수가 아닌경우 -1을 반환한다. 풀이 및 설명)먼저 제곱근을 담을 x 변수를 선언한다. (아직까진 제곱근값을 담지 않았다.) 그리고 n의 제곱근이 양의 정수인지 판별한다. 아니라고 판단되면 바로 -1을 반환하고 종료한다. 양의 정수가 맞다면 x에 제곱근을 담는다. 그 후 1을 더하고 제곱을하여 반환한다. 처음부터 x에 제곱근 값을 넣지 않는 이유는 Math.sqrt는 double 형으로 반환해준다. 즉 long타입인 x에 넣으려면 형변환을 해줘야하는데 그렇게되면 소수점이 잘려나가서 이것이 정수인지 판별이 불가능해지기 때문이다. 이후 제곱근이 정수인지 아닌지 판별 후 정수가 맞다고 판단이..

TIL(사전캠프) 2024.06.13

SQL 코드카타. 경기도에 위치한 식품창고 목록 출력하기(2024-06-12)

빨간상자를 주의깊게 살펴보고 하나씩 나아가면 된다.풀이 및 설명)별 문제없이 풀었다. 하지만 빨간박스의 CALESCE() 함수가 무엇인지 알아보자 일단 COALESCE 함수는 "냉동시설 여부가 NULL인 경우, 'N'으로 출력" 을 위하여 사용된 부분이다. 먼저 COALESCE의 기본 형태를 보자 이런 형식을 가지고있으며 컬럼1, 컬럼2, 컬럼3, 컬럼4를 순서대로 검사하여 Null이 아닌값을 표시한다. 전부 Null값이면 기본값을 표시한다. 넣을 수 있는 컬럼의 개수제한은 없다. 1개를 넣어도 되고 4개 이상 넣어도 된다. 이제내가 사용한 COALESCE 함수를 다시 살펴보면COALESCE(FREEZER_YN, 'N') AS FREEZER_YN FREEZER_YN 컬럼의 값이 Null이면 'N'을 출력..

TIL(사전캠프) 2024.06.12

알고리즘 코드카타. 자연수 뒤집어 배열로 만들기(2024-06-12)

문제 요약 : long 타입의 자연수를 입력받고 뒤집어서 배열로 저장한다. 풀이 및 설명)빨간색 박스를 위에서부터 설명한다. 1. 숫자를 문자열로 바꾸고 그 길이를 반환한다. 구한 길이를 배열의 크기로 선언한다. 2. n은 long타입이다. 하지만 answer배열은 int타입이다. 그래서 int형으로 변환하여 값을 넣는다.- 어차피 한자리숫자를 넣기 때문에 바로 n%10으로 받아도 상관없지 않나? 라고 생각할 수 있지만 아니다. 오류가 발생함- (int)n%10을 하면 우선순위 문제로 오류가 발생한다. 큰 숫자가 들어갈 경우 long타입인 n을 범위에 맞지 않는 int형으로 변환을 먼저하기 때문에 (n%10)을 통해 먼저 int형의 범위내로 축소시킨 다음 int형으로 변환한 것이다.

TIL(사전캠프) 2024.06.12

알고리즘 코드카타. x만큼 간격이 있는 n개의 숫자(2024-06-11)

요약 : x와 n을 입력받아 x부터 시작하여 x씩 증가하는 n개의 리스트를 만들어 반환하라 문제의 내용 자체는 간단하다. x부터 시작하여 x씩 증가하는 n개의 수열을 만드는것이다. 일단 당장 생각나는대로 코드를 작성해본다. 얼핏보면 x부터 시작하여 x만큼 증가하는 n크기의 리스트를 반환하는 조건을 만족하여 맞는것 같지만 틀렸다.이유) 제한조건을 살펴보자x가 -10,000,000이상, 10,000,000이하 라고 한다. 그렇다면 만약 x가 10,000,000이고 n이 1000이라면? 그렇다 숫자가 엄청나게 커진다. 그리고 잘 보면 answer 배열의 자료형은 long인것을 알 수 있다. 그리고 연산을 x를 기준으로 하는데, x의 자료형은 int형이다. int형의 범위는 -2,147,483,648 ~ 2,1..

TIL(사전캠프) 2024.06.11

알고리즘 코드카타. 약수의 합(2024-06-11)

요약 : 정수 n을 입력받고 n의 약수의 합을 구하기 이 문제를 보자마자 이전에 풀이한 '나머지가 1이되는 수 찾기'가 생각났다. 거기서 얻은 지식을 활용해 풀 수 있을것이다. 풀이과정) 어떤 정수 n의 약수는 대칭적 특성을 가지고있다는것을 배웠다. 36을 기준으로 1,2,3,4,6,9,12,18,36이 약수이며 36의 제곱근인 6을 중심으로 대칭적이다. 1 X 36 2 X 18 3 X 12 4 X 9 6 X 6 이 공식을 다음과 같이 변형하면 문제의 답이 될것이다. 1 + 36 2 + 18 3 + 12 4 + 9 그리고 중심인 제곱근은 하나이므로 6을 더해준다. 그럼 다음과 같은 수식이 완성된다 1 + 36 + 2 + 18 + 3 + 12 + 4 + 9 + 6 = 91 주의! : 6 + 6을 하는 실수..

TIL(사전캠프) 2024.06.11

알고리즘 코드카타. 나머지가 1이 되는 수 찾기(2024-06-10)

요약 : 자연수 n이 주어졌을 때 x로 나눈 나머지가 1인 수 중에서 가장 작은 수를 구하기 먼저 n을 x로 나눴을 때 나머지가 1이되는 가장 큰 x는 n-1이다. 예시1) n이 10일 때 9로 나누면 나머지가 1예시2) n이 12일 때 11로 나누면 나머지가 1 그렇다면, n-1의 약수 중에서 1을 제외한 가장 작은 수를 구하면 된다. 예시1) 10 - 1인 9의 약수 중 가장 작은수는 3이다. -> 10을 3으로 나누면 나머지는 1이다.예시2) 12 - 1인 11은 약수가 1과 자기자신인 11 뿐인 소수이다 -> 가장 작은 숫자는 11이다. 따라서 나는 다음과 같은 코드를 작성했다.  문제점) 이 코드는 n-1의 정수의 1을 제외한 가장 작은약수를 구하여 반환하고, 없다면(소수라면) n-1을 반환하는..

TIL(사전캠프) 2024.06.10

SQL 코드카타 1. 이름에 EL 들어가는 동물 찾기(2024-06-07)

요약 : ANIMAL_INS 테이블에서 이름에 "EL"이 포함된 "개"를 찾아서 "아이디"와 "이름"을 조회하라 단, 결과는 이름순으로 조회한다. 문제의 요약과 함께 하나씩 풀어서 설명해보겠다."ANIMAL_INS" 테이블에서  이름에 "EL" 이 포함된  "개" 를 찾아서  "아이디" 와 "이름" 을 조회하라  단, 결과는 이름순으로 조회한다.  1. SELECT ANIMAL_ID, NAME == "아이디"와 "이름"을 조회하라2. FROM ANIMAL_INS == "ANIMAL_INS" 테이블에서3. WHERE NAME LIKE "%EL%" == 이름에 "EL"이 포함된 (조건1)4. AND ANIMAL_TYPE = "DOG" == "개"를 찾아서 (AND라서 모두 만족되야 하는 조건2 추가)5. O..

TIL(사전캠프) 2024.06.07