TIL 제출하기(매일 23:59 까지)
❤️🔥TIL : Today I Learned
매일 저녁, 공부를 마무리하면서 제출해주세요.
하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)
[TIL을 쓰는 이유]
1. 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
2. TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
3. 꾸준히 기록을 남기는 습관 가지기
알고리즘 코드카타
자연수 N이 주어졌을 때, N의 각 자릿수의 합을 구하는 함수 solution을 자바로 작성하는 방법을 설명하겠습니다.
문제 접근 방법
- 입력받은 자연수 N을 문자열로 변환합니다.
- 문자열의 각 자릿수를 순회하며 숫자로 변환하고 합을 구합니다.
- 최종적으로 구한 합을 반환합니다.
이 과정을 자바로 구현하면 다음과 같습니다.
구현 코드
public class Solution {
public int solution(int N) {
// 1. N을 문자열로 변환
String strN = Integer.toString(N);
// 2. 자릿수의 합을 저장할 변수
int sum = 0;
// 3. 문자열의 각 자릿수를 순회하며 합을 구함
for (int i = 0; i < strN.length(); i++) {
// 각 자릿수를 문자에서 정수로 변환 후 더함
sum += Character.getNumericValue(strN.charAt(i));
}
// 4. 최종 합을 반환
return sum;
}
public static void main(String[] args) {
Solution solution = new Solution();
// 테스트 케이스
int N1 = 123;
int result1 = solution.solution(N1);
System.out.println("N = " + N1 + " -> " + result1); // 출력: N = 123 -> 6
int N2 = 987;
int result2 = solution.solution(N2);
System.out.println("N = " + N2 + " -> " + result2); // 출력: N = 987 -> 24
}
}
코드 설명
- N을 문자열로 변환: Integer.toString(N)을 사용하여 자연수 N을 문자열로 변환합니다.
- 자릿수의 합을 저장할 변수: sum 변수를 초기화하여 자릿수의 합을 저장합니다.
- 문자열의 각 자릿수를 순회: for 루프를 사용하여 문자열의 각 자릿수를 순회합니다.
- strN.charAt(i)를 사용하여 각 문자를 가져오고, Character.getNumericValue()를 사용하여 문자를 숫자로 변환합니다.
- 변환한 숫자를 sum에 더합니다.
- 최종 합을 반환: 모든 자릿수를 더한 최종 합을 반환합니다.
테스트 케이스
- N = 123일 때, 결과는 6이어야 합니다.
- N = 987일 때, 결과는 24이어야 합니다.
SQL 코드카타
USER_INFO 테이블에서 나이 정보가 없는 회원 수를 세는 SQL 쿼리
이 글에서는 의류 쇼핑몰에 가입한 회원 정보를 담고 있는 USER_INFO 테이블에서 나이 정보가 없는 회원 수를 세는 SQL 쿼리를 작성하는 방법을 알아보겠습니다. 이 테이블에는 회원 ID, 성별, 나이, 가입일 컬럼이 있습니다. 나이 정보가 없는 회원 수를 구하고 그 결과를 USERS라는 컬럼명으로 출력하는 쿼리를 작성해보겠습니다.
테이블 구조
USER_INFO 테이블의 구조는 다음과 같습니다:
컬럼명타입널 허용 여부
USER_ID | INTEGER | FALSE |
---|---|---|
GENDER | TINYINT(1) | TRUE |
AGE | INTEGER | TRUE |
JOINED | DATE | FALSE |
- USER_ID: 각 사용자를 고유하게 식별하는 ID입니다.
- GENDER: 사용자의 성별로, NULL, 0 (남자), 1 (여자) 값을 가질 수 있습니다.
- AGE: 사용자의 나이로, NULL 값을 가질 수 있습니다.
- JOINED: 사용자가 가입한 날짜입니다.
문제 설명
USER_INFO 테이블에서 나이 정보가 없는 (AGE 컬럼이 NULL인) 회원의 수를 세는 SQL 쿼리를 작성해야 합니다. 결과는 USERS라는 컬럼명으로 출력해야 합니다.
예시
다음과 같은 USER_INFO 테이블이 주어졌을 때:
USER_IDGENDERAGEJOINED
1 | 1 | 26 | 2021-06-01 |
---|---|---|---|
2 | NULL | NULL | 2021-07-25 |
3 | 1 | NULL | 2021-07-30 |
4 | 0 | 31 | 2021-08-03 |
나이 정보가 없는 회원은 2명 (USER_ID 2와 USER_ID 3)이므로, 결과는 다음과 같이 나와야 합니다:
USERS
2 |
---|
SQL 쿼리
이를 해결하기 위한 SQL 쿼리는 다음과 같습니다:
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL;
설명
- SELECT COUNT(*) AS USERS: 조건에 맞는 행의 수를 세고 결과를 USERS라는 이름으로 출력합니다.
- FROM USER_INFO: 데이터를 조회할 테이블을 지정합니다.
- WHERE AGE IS NULL: AGE 컬럼이 NULL인 행만 선택합니다.
자세한 설명
- COUNT 함수: COUNT(*) 함수는 WHERE 조건을 만족하는 모든 행의 수를 셉니다.
- 별칭 사용: AS USERS를 사용하여 출력 컬럼명을 USERS로 지정합니다.
- 필터 조건: WHERE AGE IS NULL 조건을 사용하여 AGE 컬럼이 NULL인 행만 선택합니다.
일일과제, Lv2. 스파르타 자판기
import java.util.Map;
import java.util.Scanner;
public class BeverageVendingMachine {
public static void main(String[] args) {
// Step 1: 음료 이름과 가격을 저장하는 맵을 생성합니다
Map<String, Integer> beverages = Map.of(
"사이다", 1700,
"콜라", 1900,
"식혜", 2500,
"솔의눈", 3000
);
// Step 2: 음료와 가격을 표시합니다
System.out.println("음료 메뉴:");
for (Map.Entry<String, Integer> beverage : beverages.entrySet()) {
System.out.println(beverage.getKey() + ": " + beverage.getValue() + "원");
}
// Step 3: 사용자로부터 음료 선택을 입력받습니다
Scanner scanner = new Scanner(System.in);
System.out.print("어떤 음료를 선택하시겠습니까? ");
String userChoice = scanner.nextLine();
// Step 4: 선택한 음료가 목록에 있는지 확인합니다
if (beverages.containsKey(userChoice)) {
// Step 5: 사용자가 넣을 돈을 입력받습니다
System.out.print("얼마를 넣으시겠습니까? ");
int coin = scanner.nextInt();
// Step 6: 넣은 돈이 충분한지 확인합니다
if (coin < beverages.get(userChoice)) {
System.out.println("돈이 부족합니다.");
} else {
// Step 7: 잔액을 계산하고 표시합니다
int remain = coin - beverages.get(userChoice);
System.out.println(userChoice + "을/를 구매하셨습니다.");
System.out.println("잔액: " + remain + "원");
}
} else {
// 목록에 없는 음료를 선택한 경우
System.out.println("목록에 없는 음료입니다. 실행을 종료합니다.");
}
// 스캐너를 닫습니다
scanner.close();
}
}
느낀점
[11일차] 알고리즘 코드카타 08.08(목)_SQL이랑 언어알고리즘을 같이 담아서 썻다
'TIL > 스파르타 코드카타' 카테고리의 다른 글
[내일배움캠프] 사전캠프 코드카타 15번 문제 (0) | 2024.08.10 |
---|---|
[내일배움캠프] 사전캠프 코드카타 14번 문제 (0) | 2024.08.10 |
[내일배움캠프] 사전캠프 코드카타 12번 문제 (0) | 2024.08.10 |
[내일배움캠프] 사전캠프 코드카타 11번 문제 (0) | 2024.08.10 |
[내일배움캠프] 사전캠프 코드카타 10번 문제 (0) | 2024.08.10 |