자연수 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)); 을 하나하나 분리해보자
자바는 객체지향 프로그래밍 언어이다 객체지향이란? 프로그램을 수많은 객체단위로 나누고 그것의 상호작용으로 서술하는 방식이다..
자바로 프로그램을 제작하면 JVM으로 변환한다. JVM이란? java를 컴파일하면 나오는 바이트코드를 실행하기 위한 가상 머신이다.
자바의 장점 이식성 : 한번 작성되면 JVM이 설치된 모든 시스템에서 실행 가능하다. 가장 많이 사용되는 언어 중 하나 : 가장 많이 사용되는 언어중 하나이므로 대규모 인재 풀과 짧은 학습곡선, 다양한 라이브러리등이 있다. 다양성 : 대규모 엔터프라이즈, 안드로이드 등 다양한 분야에서 사용된다
스프링에 대해 자료를 정리해도 살짝 이해가 어려워서 추후 수정하기! 아래는 챗지피티한테 물어본 결과이다.
Spring이란? 자바 프레임워크이다. Django(Python)같이 자바는 Spring을 이용해 웹 어플리케이션을 개발한다.
Spring은 어떨때 사용하는가? 웹, 보안등에 사용된다
스프링의 특징 1. 경량 컨테이너 : 필요에따라 가볍게 이용할 수 있다. 2. 의존성 주입 : 객체간의 의존성을 스프링이 관리하여 결합도를 낮출 수 있다. 3. POJO 기반 : 특별한 클래스를 상속받거나 인터페이스를 구현하지 않고도 개발이 가능하다. 4. 테스트 : 강력한 테스트 지원을 통해 단위 테스트와 통합 테스트가 용이하다.
스프링의 장점 1. 유연성과 확장성 : 다양한 모듈과 통합이 용이하며 필요에따라 확장 가능하다 2. 생산성 향상 : 의존성 주입을통해 코드 작성이 단순해진다 3. 테스트 용이 : 테스트가 용이하다.
스프링의 단점 1. 복잡성 : 초보에게는 Spring의 개념과 구성 요소가 복잡하게 느껴질 수 있다.
스프링과 스프링 부트의 차이 1. 설정 간소화 : 스프링 부트는 스프링 프레임워크의 복잡한 설정을 자동으로 처리해준다. 2. 내장서버 : 스프링 부트는 내장 톰캣 등 서버를 제공하여, 별도 서버 설정 없이도 애플리케이션을 쉽게 진행 할 수 있게 해준다 3. 의존성관리 : 의존성을 간편하게 관리할 수 있으며, 기본 라이브러리들을 자동으로 포함시켜준다
리스트를 사용하라고 해서 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);
}
}
데이터베이스란? 데이터를 구조적으로 저장하고 관리하는 서비스 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’이 아닌것을 가져온다.