일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- sql 데이터형 변환
- toLowerCase()
- 모던자바
- git 컨벤션
- 자바 유클리드
- replaceAll()
- 스프링뼈대
- 최소공배수
- 자바 스트링
- while과 two-pointer
- stringbuilder의 reverse()
- 최대공약수와 최소공배수
- 유클리드호제법
- 자바 최소공배수
- 래퍼타입
- 베주계수
- 스프링
- 프로그래머스 레벨1
- ineer join
- string과 stringbuilder
- StringBuilder
- string
- addDoc
- Git사용법
- 스프링환경설정
- 최대공약수
- isuppercase()
- islowercase()
- 자바 최대공약수
- 동일성과 동등성
- Today
- Total
주노 님의 블로그
20240703 사전캠프 3일차 TIL 본문
사전캠프 3일차 내용 간단요약
- 14:00 ~ 14:10 : 어제 TIL 복습
- 14:10 ~ 15:10 : 알고리즘 공부 (13 ~ 18)
int형 분리하기 - 15:20 ~ 16:00 : 데일리 과제
데일리 2주차 화요일 과제 - java톺아보기
데일리 2주차 수요일 과제 - Lv1. 랜덤 닉네임 생성기 - 16:00 ~ 18:00 : 강의 ( 엑셀보다 쉽고 빠른 SQL )
SELECT절
WHERE절
알고리즘 공부 - int형 분리하기
13. 자릿수 더하기
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
17. 자연수를 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
위 두 문제는 두가지 방법이 있다
1. 산술연산자 사용
2. long > str > long
13번 문제는 1번으로
17번 문제는 2번으로 풀어봤다
import java.util.Scanner;
// 13번째 06월 08일 자릿수 더하기 : 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
//예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
//
//제한사항
//N의 범위 : 100,000,000 이하의 자연수
public class cote13 {
public static void main(String[] args) {
Solution sol = new Solution();
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int result = sol.solution(num1);
System.out.println(result);
}
}
class Solution {
public int solution(int n) {
int answer = 0;
while(true) {
if (n < 10) {
answer += n;
break;
}
answer += n % 10;
n = n / 10;
}
return answer;
}
}
answer가 12345라고 가정했을때
answer += n % 10;
>> n을 10으로 나눈 나머지 즉 마지막 자리수를 뽑아낸 후 answer에 더한다
n = n / 10
>> n을 10으로 나눈다, 이러면 1의자리수는 사라지고 1234만 남게된다
반복문을 돌려 n이 10 미만일경우 남은 수를 더해준 후 브레이크 한다.
import java.util.Scanner;
// 17번째 06월 12일 자연수 뒤집어 배열로 만들기 : 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
public class cote17 {
public static void main(String[] args) {
Solution sol = new Solution();
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int [] result = sol.solution(num1);
System.out.println(result);
}
}
class Solution {
public int[] solution(long n) {
String number = Long.toString(n);
int[] answer = new int [number.length()];
for(int i = 0 ; i<number.length(); i++)
answer[i] = Character.getNumericValue(number.charAt(number.length()-i-1));
return answer;
}
}
17번 문제이다
.toString()을 사용하면 자연수를 문자열로 변환해준다.
.length()를 하며 배열의 자리수를 딱맞게 선언해준다
예를들어 number = "12345"를 위와같이 작성하였을때
i가 0이라고 가정하자.
number.length() = 5이다.
Character.getNumericValue(number.charAt(number.length()-i-1)); 을 하나하나 분리해보자
Character.getNumericValue(number.charAt(number.length()-i-1));
>> 뒤집어서 역순부터 출력해야하니 끝값부터 (일의자리수) 받아온다 -1을 하는 경우는 배열은 0 부터 시작하기때문에..
>> 여기서 number.length()-i-1은 5-0-1로 4이다
Character.getNumericValue(number.charAt(number.length()-i-1));
>> 변수.charAt(index)는 변수의 index번째에 있는 문자를 반환해준다.
>> charAt(4)는 5이다.
Character.getNumericValue는 문자를 숫자로 변환한다.
위 방법을 쓰지않고도 사용할수 있는 방법은 아래와 같다
number.charAt(number.length() - 1 - i) - '0';
>> - '0'를 하는 이유는 charAt(index)는 문자를 반환해준다.
문자를 그대로 int로 변환할경우 아스키코드라는 값으로 변환을해준다. 문자 '0' 10진수값은 48
문자와 숫자의 0은 다르다.
따라서 위 코드에서 문자열을 숫자로 바꾸려면 -'0'를 하면된다.
아래는 챗지피티가 짜준 아스키코드표!
Java 톺아보기
- 자바는 객체지향 프로그래밍 언어이다
객체지향이란? 프로그램을 수많은 객체단위로 나누고 그것의 상호작용으로 서술하는 방식이다.. - 자바로 프로그램을 제작하면 JVM으로 변환한다.
JVM이란? java를 컴파일하면 나오는 바이트코드를 실행하기 위한 가상 머신이다. - 자바의 장점
이식성 : 한번 작성되면 JVM이 설치된 모든 시스템에서 실행 가능하다.
가장 많이 사용되는 언어 중 하나 : 가장 많이 사용되는 언어중 하나이므로 대규모 인재 풀과 짧은 학습곡선, 다양한 라이브러리등이 있다.
다양성 : 대규모 엔터프라이즈, 안드로이드 등 다양한 분야에서 사용된다
Spring
스프링에 대해 자료를 정리해도 살짝 이해가 어려워서 추후 수정하기! 아래는 챗지피티한테 물어본 결과이다.
- Spring이란?
자바 프레임워크이다. Django(Python)같이 자바는 Spring을 이용해 웹 어플리케이션을 개발한다. - Spring은 어떨때 사용하는가?
웹, 보안등에 사용된다 - 스프링의 특징
1. 경량 컨테이너 : 필요에따라 가볍게 이용할 수 있다.
2. 의존성 주입 : 객체간의 의존성을 스프링이 관리하여 결합도를 낮출 수 있다.
3. POJO 기반 : 특별한 클래스를 상속받거나 인터페이스를 구현하지 않고도 개발이 가능하다.
4. 테스트 : 강력한 테스트 지원을 통해 단위 테스트와 통합 테스트가 용이하다. - 스프링의 장점
1. 유연성과 확장성 : 다양한 모듈과 통합이 용이하며 필요에따라 확장 가능하다
2. 생산성 향상 : 의존성 주입을통해 코드 작성이 단순해진다
3. 테스트 용이 : 테스트가 용이하다. - 스프링의 단점
1. 복잡성 : 초보에게는 Spring의 개념과 구성 요소가 복잡하게 느껴질 수 있다. - 스프링과 스프링 부트의 차이
1. 설정 간소화 : 스프링 부트는 스프링 프레임워크의 복잡한 설정을 자동으로 처리해준다.
2. 내장서버 : 스프링 부트는 내장 톰캣 등 서버를 제공하여, 별도 서버 설정 없이도 애플리케이션을 쉽게 진행 할 수 있게 해준다
3. 의존성관리 : 의존성을 간편하게 관리할 수 있으며, 기본 라이브러리들을 자동으로 포함시켜준다
데일리 2주차 수요일 과제 - Lv1. 랜덤 닉네임 생성기
- 리스트를 사용하라고 해서 ArrayList를 사용하였다.
아래 간단하게 ArrayList를 설명하고 주말에 따로 카테고리만들어서 정리해야지ㅣ... - ArrayList란? 동적배열을 구현할 수 있는 클래스이다.
- ArrayList의 특징
1. 순서 유지
2. 중복 허용 - 주요메서드
.add(e) : 요소를 리스트에 추가한다
.get(index) : 해당 위치의 요소를 반환해준다
.remove(e) : 해당 요소가 나타나는 첫번째 요소를 제거한다.
.size() : 크기를 반환한다
.contains(e) : 리스트에 요소가 포함되어있는지 확인한다.
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class rand {
public static void main(String[] args) {
//리스트 선언
List<String> nick1 = new ArrayList<String>();
List<String> nick2 = new ArrayList<String>();
List<String> nick3 = new ArrayList<String>();
//nick1 추가
nick1.add("기절초풍");
nick1.add("멋있는");
nick1.add("재미있는");
//nick2 추가
nick2.add("도전적인");
nick2.add("노란색의");
nick2.add("바보같은");
//nick3 추가
nick3.add("돌고래");
nick3.add("개발자");
nick3.add("오랑우탄");
//랜덤 돌리기
Random rnd = new Random();
String result = nick1.get(rnd.nextInt(nick1.size())) + " " + nick2.get(rnd.nextInt(nick2.size())) + " " + nick3.get(rnd.nextInt(nick3.size()));
System.out.println("랜덤 닉네임 : " + result);
}
}
강의 ( 엑셀보다 쉽고 빠른 SQL )
1. 1주차 1~2강
- 1주차 1~2강
- 데이터베이스란?
데이터를 구조적으로 저장하고 관리하는 서비스
MySQL, SQLite, Oracle등이 있음 - 테이블이란 ?
데이터 베이스 내에서 데이터를 저장하는 기본 단위. 특정 주제에 대한 내용을 저장함.
고객의 정보를 저장하는 customers, 음식 주문 정보를 저장하는 food_orders 등 - 컬럼이란?
데이터를 저장하는 각 열
2. 1주차 3~4강 : Select
- Select 이란?
데이터를 조회하는 명령어
사용방법 : Select 컬럼명 from 테이블명
Select * ~ : 모든 컬럼을 가져온다
Select * from food_orders : food_orders 테이블의 모든 컬럼을 가져온다
select 컬럼명 from 테이블명 : 테이블의 특정한 컬럼을 가져온다
select restaurant_name, addr from food_orders : food_orders 테이블의 restaurant_name과 addr만 가져온다
select 칼럼명1 별명1, 칼럼명2 as 별명2 from 테이블명 : 테이블을 특정한 칼럼을 불러온다, 다만 불러올때 칼럼은 별명으로 가져온다.
select restaurant_name as "음식점", addr address from food_orders fo : food_orders 테이블의 restaurant_name과 addr만 가져오되, restaurant_name은 음식점으로, addr은 address로 가져온다.
위의 사진과 다른점은 음식점과 address로 바뀌었다는점
방법 1. 칼럼명 as 별명
방법 2. 칼럼명 별명
위 두가지 방법이 가능하다.
3. 1주차 5~7강 : Where절
- Where절 이란?
데이터를 조회할 때 특정 조건을 필터링해서 불러온다.
사용방법 : Select 칼럼명 from 테이블 명 where 조건명
SELECT * FROM customers c WHERE age=21 : customers 테이블에서 age가 21인것만 가져온다.
=, >, <, >=, <=, !=(<>)가 사용가능하다
문자열은 작은따옴표가 필요하다
SELECT * FROM customers c WHERE gender='female’ : customers 테이블에서 gender이 female인것만 가져온다.
BETWEEN A AND B : A이상 B이하(사이)의 값을 조회한다.
SELECT * FROM customers c WHERE age BETWEEN 21 AND 23 : customers 테이블에서 age가 21이상 23이하인 것만 가져온다.
칼럼 IN (A, B, C) : 칼럼에서 A, B, C만 가져온다
SELECT * FROM customers c WHERE age in (15, 21, 31) : customers 테이블에서 age가 15, 21, 31인 것만 가져온다.
LIKE 'A%' : 문자열 패턴 매칭을 위해 사용한다
SELECT * FROM customers c WHERE name like '김%' : customers 테이블에서 name이 '김'으로 시작하는 것들을 가져온다.
%: 문장
김% : 김으로 시작하는것
%김 : 김으로 끝나는것
%김% : 중간에 김이 들어가는것
_ : 단일 문자
_김 : 김 앞에 단일문자가 있는것
김_ : 김 뒤에 단일문자가 있는것
_김_ : 중간에 김이 있는것
WHERE 조건문 OR 조건문 : A조건을 만족하거나, B조건을 만족할때 (둘 중 하나만 만족하여도 가능)
SELECT * FROM customers c WHERE name like '김%' or gender ='female’ : customers 테이블에서 name이 '김'으로 시작 하거나, gender가 'female’인것을 가져온다.
WHERE 조건문 OR 조건문 : A조건과, B조건을 만족할때 (둘다 만족해야함)
SELECT * FROM customers c WHERE name like '김%' and gender ='female’ : customers 테이블에서 name이 '김'으로 시작하고, gender가 'female’인것을 가져온다.
NOT 조건문 : 조건문과 반대될때
SELECT * FROM customers c WHERE not gender ='female’ : customers 테이블에서 gender가 'female’이 아닌것을 가져온다.
4. 숙제
- 상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기.
조건문이 필요한 컬럼 : 상품준비시간(food_preparation_time), 한국음식점(cuisine_type)
조회할 컬럼 : 식당명(restaurant_name), 고객번호(customer_id)
조회할 테이블 : food_orders
SELECT restaurant_name "식당명", customer_id "고객번호"
FROM food_orders fo
WHERE food_preparation_time BETWEEN 20 and 30
AND cuisine_type = 'korean'
'TIL' 카테고리의 다른 글
20240708 사전캠프 6일차 TIL (1) | 2024.07.08 |
---|---|
20240705 사전캠프 5일차 TIL (1) | 2024.07.05 |
20240704 사전캠프 4일차 TIL (1) | 2024.07.04 |
20240702 사전캠프 2일차 TIL (0) | 2024.07.02 |
20240701 사전캠프 1일차 TIL (데일리 1일차, 강의) (0) | 2024.07.01 |