1. % 연산자를 활용해 몫 구하기

파이썬에서는 '/'를 이용해 몫을 구하고, '%'를 이용해 나머지를 구할 수 있다.

자바는 '%'를 이용해 나머지는 구할 수 있지만 몫을 구할 수가 없다. 자바의 '/'는 그냥 나눗셈을 해버린다.

따라서 나눗셈을 한 다음 정수로 형변환(int) 하면 몫을 구할 수 있다.

import java.util.Scanner;

public class quotient {
	public static void main(String[] args) {
		
		System.out.println("나누고 싶은 수를 정수로 입력해주세요.");
		Scanner s = new Scanner(System.in);
		double divided = s.nextDouble();
		
		System.out.println("몇으로 나누겠습니까? (정수로 입력해주세요.)");
		double divisor = s.nextDouble();
		
		int quotient = 0;
		double remainder = 0;
		
		if (divisor != 0) {
			quotient = (int)(divided / divisor);
			remainder = divided % divisor;
			System.out.println(divided + "를 " + divisor + "로 나눈몫은 " + quotient + "이고 나머지는 " + remainder + "입니다." );
		} else {
			System.out.println("0으로 나눌 수 없습니다.");
		}

	}
}

결과 : 

나누고 싶은 수를 정수로 입력해주세요.
7
몇으로 나누겠습니까? (정수로 입력해주세요.)
2
7.0를 2.0로 나눈몫은 3이고 나머지는 1.0입니다.


나누고 싶은 수를 정수로 입력해주세요.
300.5
몇으로 나누겠습니까? (정수로 입력해주세요.)
40.5
300.5를 40.5로 나눈몫은 7이고 나머지는 17.0입니다.

나눗셈을 할 때는 반드시 나누는 수가 0인 경우를 생각해야한다!

 

2. % 연산자를 이용해 특정 단위 이하의 수를 구하거나 자릿수 구하기

import java.util.Scanner;

public class thUnit {
	public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		
		int divided = s.nextInt();
		int divisor1 = 10;
		int divisor10 = 100;
		int divisor100 = 1000;
		int divisor1000 = 10000;
		int divisor10000 = 100000;

	
		System.out.println(divided + "의 일의 자릿수는 " + (divided % divisor1) + "입니다.\n");		// 10으로 나눈 나머지
		
		System.out.println(divided + "의 십의 자릿수 이하는 " + (divided % divisor10) + "입니다.");		// 100으로 나눈 나머지
		System.out.println(divided + "의 십의 자릿수는 " + (divided % divisor10 / divisor1) + "입니다.\n");		// 100으로 나눈 나머지를 10으로 나눈 몫
		
		System.out.println(divided + "의 백의 자릿수 이하는 " + (divided % divisor100) + "입니다.");	// 1,000으로 나눈 나머지
		System.out.println(divided + "의 백의 자릿수는 " + (divided % divisor100 / divisor10) + "입니다.\n");	// 1,000으로 나눈 나머지를 100으로 나눈 몫
		
		System.out.println(divided + "의 천의 자릿수 이하는 " + (divided % divisor1000) + "입니다.");	// 10000으로 나눈 나머지
		System.out.println(divided + "의 천의 자릿수는 " + (divided % divisor1000 / divisor100) + "입니다.\n");	// 10,000으로 나눈 나머지를 1,000으로 나눈 몫
		
		System.out.println(divided + "의 만의 자릿수 이하는 " + (divided % divisor10000) + "입니다.");	// 100,000으로 나눈 나머지
		System.out.println(divided + "의 만의 자릿수는 " + (divided % divisor10000 / divisor1000) + "입니다.\n");	// 100,000으로 나눈 나머지를 10,000으로 나눈 몫

	}

}

결과 : 

68574
68574의 일의 자릿수는 4입니다.

68574의 십의 자릿수 이하는 74입니다.
68574의 십의 자릿수는 7입니다.

68574의 백의 자릿수 이하는 574입니다.
68574의 백의 자릿수는 5입니다.

68574의 천의 자릿수 이하는 8574입니다.
68574의 천의 자릿수는 8입니다.

68574의 만의 자릿수 이하는 68574입니다.
68574의 만의 자릿수는 6입니다.

 

3. 범위를 제한하는데 활용할 수 있다.

% 3 으로 범위 제한 : 012 012 012 012 AAA AAA AAA AAA

% 5 으로 범위 제한 : 01234 01234 01234 AAAAA AAAAA AAAAA

public class summation_of_arithmetic_progression {
	public static void main(String[] args) {
		
		int totalSum = 0;
		int oddSum = 0;
		int evenSum = 0;
		
		for(int i = 0; i < 100; i++) {
			totalSum = totalSum + (i + 1);
		}
		
		System.out.println("1부터 100까지의 숫자의 합은 " + totalSum + " 입니다.\n");
		
		
		for(int i = 0; i < 100; i++) {
			if ((i + 1) % 2 != 0) {
				oddSum = oddSum + (i + 1);
			}
		}
		
		System.out.println("1부터 100까지의 홀수의 합은 " + oddSum + " 입니다.\n");
		
		for(int i = 0; i < 100; i++) {
			if ((i + 1) % 2 == 0) {
				evenSum = evenSum + (i + 1);
			}
		}
		
		System.out.println("1부터 100까지의 짝수의 합은 " + evenSum + " 입니다.\n");
	}
}

결과 : 

1부터 100까지의 숫자의 합은 5050 입니다.

1부터 100까지의 홀수의 합은 2500 입니다.

1부터 100까지의 짝수의 합은 2550 입니다.

1. 묵시적 형변환, 명시적 형변환

int number1 = 10;				// 정수
double number2 = 20.2;				// 실수

double number3 = number1 + number2;		// 묵시적 형변환. (정수) + (실수) 지만 어차피 숫자니까 알아서 형변환 한다.

int number4 = (int)(number1 + number2);		// 명시적 형변환. (int)(30.2)니까 30이 된다.

 

2. 잘못된 형변환으로 인한 자료 소실

short a = 3;
int b = 10;

b = (int)a;	// b에 (int로 형변환 한)a의 값을 넣어라.

얼핏 보면 문제가 없어 보인다.

short sixteen_bits = 32767;
int thrity_two_bits = 32768;

sixteen_bits = thrity_two_bits;	// 16비트인 short가 담을 수 있는 값의 범위보다 큰 값을 넣게 되면 자료가 소실된다.

물론 요즘은 프로그램이 좋아져서 Type mismatch: cannnot convert from int to short 라고 에러를 낸다.

2020/03/27 - [분류 전체보기] - Java (자바)의 자료형 및 기초

 

Java (자바)의 자료형 및 기초

자바의 대표적인 자료형에는 다음과 같은 5가지가 있다. 1. 정수 byte : 8 bits ( =1 bytes) short : 16 bits (= 2 bytes) int : 32 bits (= 4 bytes) long : 64 bits (= 16 bytes) 요즘은 CPU도 빨라지고 램도 커..

greendreamtrre.tistory.com

실제로 이런 큰 수를 생각하지 않던 과거 프로그램들은 시대가 지나고 발전되면서 문제가 되기도 했다고...

float c = 3.0f;	// float 공간으로도 충분하다는 의미로 이렇게 쓰기도 한다.
double d = 3.0;

 

3. 여러가지 표현 방식 

a = a + 1;
a += 1;
a++;

위 3개는 모두 동일하다.

a = a + 3;
a += 3;

위 2개 역시 동일하다.


마찬가지로

a = a - 1;
a -= 1;
a--;

위 3개 역시 동일하고

a = a - 5;
a -= 5;

역시 동일하다.



하지만

a += 5;	// a = a + 5;
a =+ 5;	// a = 5;

완전히 다르니 조심할 것!

 

4. 나눗셈을 할 때는 반드시 하나의 값이 실수여야한다

public class division {
	public static void main(String[] args) {

		int integer1 = 113;
		int integer2 = 8;
		double answer1 = integer1 / integer2;		// 정수 / 정수
		double answer2 = (double)integer1 / integer2;	// (실수로 형변환) / 정수
		double answer3 = integer1 / (double)integer2;	// 정수 / (실수로 형변환)
		
		System.out.println(answer1);
		System.out.println(answer2);
		System.out.println(answer3);
				
	}

}

결과 :

answer1 = 14.0
answer2 = 14.125
answer3 = 14.125

자바의 대표적인 자료형에는 다음과 같은 5가지가 있다.

1. 정수

byte : 8 bits ( =1 bytes)    // 2^8 = 256, 256 / 2 = 128이다. 표현 범위는 0을 포함해 -128 ~ 127

short : 16 bits (= 2 bytes)    // 2^16 = 65,536 마찬가지로 범위는 -3,2768 ~ 32,767

int : 32 bits (= 4 bytes)    // 2^32 = 4,294,967,296으로 약 43억개의 숫자 표현 가능. 범위는 -2,147,483,648 ~ 2,147,483,647

long : 64 bits (= 16 bytes)    // 1.84467... x 10^19 그냥 어마어마하다... 10^4 = 만, 10^8 억, 10^12 = 조, 10^16 = 경, 대충 1845경...

요즘은 CPU도 빨라지고 램도 커져서 큰거 쓰자.

 

사용법 : 

int a = 97;

long b = 38;

public class study1 {
	public static void main(String[] args) {
		int a = 97;
		long b = 38;

	}
}

 

2. 실수

float : 32 bits (= 4 byte)

double : 64b bits (= 8 byte)

 

사용법 :

double a = 3.14;

double b = 12;

public class study1 {
	public static void main(String[] args) {
		double a = 3.14;
		double b = 12;

	}
}

 

3. 문자

char : '단일문자'

 

사용법 : 단일 따옴표

char c = 'A';

char d = '4';

public class study1 {
	public static void main(String[] args) {
		char c = 'A';	' '	 작은 따옴표로 묶는다.
		char d = '4';

	}
}

 

4. 문자열

String : "문자열"

 

사용법 : 쌍 따옴표

String p = "Hello Politech";

public class study1 {
	public static void main(String[] args) {
		String p = "Hello Politech";

	}
}

 

5. 참 / 거짓

boolean : 참 / 거짓

 

사용법 :

boolean m = true;

boolean n = false;

public class study1 {
	public static void main(String[] args) {
		boolean m = true;
		boolean n = false;

	}
}

 

 

 

자바는 변수 선언부터 출력까지 모두 세미콜론(semicolon)( ; ) 으로 마친다.

자바에서는 일반적으로 camel 방식을 쓴다.   i.e. userInputNumber

내가 이 프로젝트를 왜 만들어야하지? 목적!! 매우 중요!!

수익성, 판매 요소가 정확히 있어야한다. 소프트웨어를 개발하고 팔아서 돈을 버는게 목적이니까!!

Pain-Point (불편한점) 을 3가지 가량 제시 (구매자가 이게 해결되면 좋겠다 느끼는 것들)

-> 서비스 필요성 제시

-> 서비스 방안 제시 (i.e. 빅데이터 분석으로 매주 화요일 5시에 배치하여 재고 및 수요 파악을 정확히 하도록 하겠다.)

 

배치는 매일 자정에 분석이 돌아가게 하겠다. or 매주 화요일 5시에 분석이 돌아가게 하겠다.

 

2014년 5월 UC Berkely에서 출시

고속 인 메모리 기반 분산 처리 플랫폼

오픈 소스

다양한 언어 (SQL, Scala, R, Python) 지원

머신러닝 라이브러리 지원 ( ML Library)

성장속도 대비 기술인력 부족

1. Hyperautonomous (초자동화) : 자동화 프로세스가 포함된 AIpdriven 의사결정. i.e. AI, ML, RPA, iMBS

2. Multiexperience (다중경험) : 대화형 플랫폼으로 사람과 디지털의 상호작용. i.e. AR, VR, MR

3. Democratization (민주화) : Democratization of technology 전문 지식 없이도 쉽게 비용 없이 지식 서비스를 제공 받는 것.

4. Human Augmentation (인간증강) : 인간의 인지 및 신체 경험을 향상시키는 기술.

5. Transparency and Traceability (투명성/추적성) : 기술의 진화는 신뢰 위기(trust crisis)를 만듦. 데이터의 수집 및 사용 방법은 윤리, 청렴성, 개방성, 책임성, 역량, 일관성이 중요.

6. Empowered Edge (엣지 컴퓨터의 고도화) : 자율권을 가진 엣지.

7. Distributed Cloud (분산 클라우드) : Public Cloud의 분산 설치.

8. Autonomous things (자율 사물) : AI 기능을 활용한 장비. i.e. Drone, Robots, 자율주행

9. Practical Blockchain (실용적 블록체인) : AI, IoT 등과 블록체인이 통합되어 실용화.

10. AI Security (인공지능 보안) : AI 활용에서 보안의 취약 발생. AI를 활용한 보안 강화도 가능하지만 약의적인 AI 사용은 경계해야한다.

 

node.js, Database(SQL) -> Backend

HTML, JAVASCRIPT, CSS -> Frontend

 

HTML > 편지와 같이 정적이다

CSS > 정적인 HTML에 위치를 지정하고 색을 입히고 예쁘게 해준다. 즉, 편지를 꾸며준다.

JAVASCRIPT > 누르면 작동하게 해준다. 단순한 편지를 뛰어 넘어 웹이 기능을 하게 해준다.

+ Recent posts