자바기초
-
2020-09-10 선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최솟값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 리스트를 이와 같은 방법으로 정렬하는 데에는 Θ(n2) 만큼의 시간이 걸린다. 선택 정렬은 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용 시 성능 상의 이점이 있습니다. 출처 : 위키피디아 말은 어려워 보일 수 있지만 무작이로 정렬되어 있는 배열 4 8 9 10 2 1 3 5 6 7을 1 2 3 4 5 6 7 8 9 10처럼 최솟값..
[Java] 자바 선택정렬 구현하기 / 자바 배열 선택정렬 이론 공부2020-09-10 선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최솟값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 리스트를 이와 같은 방법으로 정렬하는 데에는 Θ(n2) 만큼의 시간이 걸린다. 선택 정렬은 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용 시 성능 상의 이점이 있습니다. 출처 : 위키피디아 말은 어려워 보일 수 있지만 무작이로 정렬되어 있는 배열 4 8 9 10 2 1 3 5 6 7을 1 2 3 4 5 6 7 8 9 10처럼 최솟값..
2020.09.10 -
2020-09-09 안녕하세요~! 오늘은 입력한 임의의 숫자 n에 대하여, 해당 수의 배수와 그들의 합 개수를 구해보도록 하겠습니다. 어렵지 않은 내용이니 바로 코드 첨부 후 설명하도록 하겠습니다. 소스코드 ※ 우선 변수를 설명하겠습니다. mok : 범위 변수 i 나누기 입력된 변수의 값이 저장 nmg : 범위 변수 i 나누기 입력된 변수 후 나머지 값이 저장 → 코드 진행간 0인지 아닌지 여부 체크 할 예정 모든 배수를 구하고자 하면 범위가 무한대로 증가하기 때문에 1 ~ 100 까지 범위를 한정지어 코드를 작성했습니다. //n의 배수의 개수와 합 구하기 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int mok, nmg; int su..
[Java] 자바 N의 개수와 합을 구해보자! / N의 배수 합 구하기2020-09-09 안녕하세요~! 오늘은 입력한 임의의 숫자 n에 대하여, 해당 수의 배수와 그들의 합 개수를 구해보도록 하겠습니다. 어렵지 않은 내용이니 바로 코드 첨부 후 설명하도록 하겠습니다. 소스코드 ※ 우선 변수를 설명하겠습니다. mok : 범위 변수 i 나누기 입력된 변수의 값이 저장 nmg : 범위 변수 i 나누기 입력된 변수 후 나머지 값이 저장 → 코드 진행간 0인지 아닌지 여부 체크 할 예정 모든 배수를 구하고자 하면 범위가 무한대로 증가하기 때문에 1 ~ 100 까지 범위를 한정지어 코드를 작성했습니다. //n의 배수의 개수와 합 구하기 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int mok, nmg; int su..
2020.09.09 -
2020-09-08 1의 보수 1의 보수란 어떤 수를 커다란 2의 거듭제곱수-1에서 빼서 얻은 이진수이다. 또는 비트를 반전시켜 얻을수 있다. 1의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다. 주어진 이진수와 자리수가 같고 모든 자리가 1인 수에서 주어진 수를 빼서 얻은 수가 1의 보수이다. 혹은 주어진 이진수의 모든 자리의 숫자를 반전(0을 1로, 1을 0으로)시키면 1의 보수를 얻을 수 있다. 2의 보수 2의 보수(--補數, 영어: two's complement)란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다. 주어진 이진수보다 한 자리 높고 가장 높은 자리가 1이며 나머지가 0인 수에서 주어진 수를 빼서 얻..
[Java] 자바 보수 구하기 / 1의 보수 2의 보수를 구해보자2020-09-08 1의 보수 1의 보수란 어떤 수를 커다란 2의 거듭제곱수-1에서 빼서 얻은 이진수이다. 또는 비트를 반전시켜 얻을수 있다. 1의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다. 주어진 이진수와 자리수가 같고 모든 자리가 1인 수에서 주어진 수를 빼서 얻은 수가 1의 보수이다. 혹은 주어진 이진수의 모든 자리의 숫자를 반전(0을 1로, 1을 0으로)시키면 1의 보수를 얻을 수 있다. 2의 보수 2의 보수(--補數, 영어: two's complement)란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다. 주어진 이진수보다 한 자리 높고 가장 높은 자리가 1이며 나머지가 0인 수에서 주어진 수를 빼서 얻..
2020.09.08 -
2020-09-07 오늘은 특정 배열 내에서의 최댓값과 최솟값을 구하는 방법을 알아보도록 하겠습니다. 숫자의 범위는 이해를 쉽게 하기 위해 1~10까지의 수가 들어간 배열을 산정하였습니다. 소스코드 a = 1부터 증가하는 숫자가 들어갈 배열 ex) a[0] 1이 들어갈 예정; int i = 0; int [] a = new int[10]; int count = 0; //1씩 증가되는 수가 저장될 변수 int max = 0, min = 10000; //최댓값과 최솟값이 들어갈 변수; do { count++; a[i] = count; if(max = a[i]) { min = a[i]; } //배열에 삽입된 값이 최댓값인지 최솟값인지 //계속 비교하며 값은 갱신함 i++; //배열의 위치를 하나씩 증가시켜준다...
[Java] 자바 최대값 최소값 구하기 / 극한값 제외 평균 구하기2020-09-07 오늘은 특정 배열 내에서의 최댓값과 최솟값을 구하는 방법을 알아보도록 하겠습니다. 숫자의 범위는 이해를 쉽게 하기 위해 1~10까지의 수가 들어간 배열을 산정하였습니다. 소스코드 a = 1부터 증가하는 숫자가 들어갈 배열 ex) a[0] 1이 들어갈 예정; int i = 0; int [] a = new int[10]; int count = 0; //1씩 증가되는 수가 저장될 변수 int max = 0, min = 10000; //최댓값과 최솟값이 들어갈 변수; do { count++; a[i] = count; if(max = a[i]) { min = a[i]; } //배열에 삽입된 값이 최댓값인지 최솟값인지 //계속 비교하며 값은 갱신함 i++; //배열의 위치를 하나씩 증가시켜준다...
2020.09.07 -
2020-09-05 최소공배수 정의 수론에서, 여러 개의 정수/다항식/환의 원소의 공배수(公倍數, 영어: common multiple)는 그들 모두의 배수가 되는 정수/다항식/환의 원소이다. 최소공배수(最小公倍數, 영어: least common multiple/ lowest common multiple, 약자 LCM)는 양의 공배수 가운데 가장 작은 하나이다. 유클리드 정역에서 0으로 나누기를 정의하지 않으므로, 이 정의는 오직 다루고자 하는 정수들이 0이 아닐 때 의미가 있다. 최대공약수 정의 수론에서, 정수들의 공약수(公約數, 영어: common divisor)는 동시에 그들 모두의 약수인 정수다. 적어도 하나가 0이 아닌 정수들의 최대공약수 (最大公約數, 문화어: 련속나눔셈; 영어: greatest..
[Java] 자바 최대공약수 최소공배수 구하는법!/ 빠르게 구해보자!2020-09-05 최소공배수 정의 수론에서, 여러 개의 정수/다항식/환의 원소의 공배수(公倍數, 영어: common multiple)는 그들 모두의 배수가 되는 정수/다항식/환의 원소이다. 최소공배수(最小公倍數, 영어: least common multiple/ lowest common multiple, 약자 LCM)는 양의 공배수 가운데 가장 작은 하나이다. 유클리드 정역에서 0으로 나누기를 정의하지 않으므로, 이 정의는 오직 다루고자 하는 정수들이 0이 아닐 때 의미가 있다. 최대공약수 정의 수론에서, 정수들의 공약수(公約數, 영어: common divisor)는 동시에 그들 모두의 약수인 정수다. 적어도 하나가 0이 아닌 정수들의 최대공약수 (最大公約數, 문화어: 련속나눔셈; 영어: greatest..
2020.09.05 -
2020-09-04 피보나치 수열 정의 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다. 출처 : 위키피디아 소스코드 ※ 10번째 피보나치 수열 즉 F10을 구해보자. ※ 피보나치 수열은 0 부터 시작한다. int a = 0; //첫째 항 int b = 1; //둘째 항 int c = 0; // 셋째 항 = 출력값 for(int i = 1; i < 10; i++) { c = a + b; a = b; b = c; } // 피보나치는 0, 1, 1, 2, ... 순으로 커지기 때문에 // F0의 값은 a와 같고 F1..
[Java] 자바 피보나치 수열을 구해보자! / 피보나치 수열 구하는법 이론2020-09-04 피보나치 수열 정의 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다. 출처 : 위키피디아 소스코드 ※ 10번째 피보나치 수열 즉 F10을 구해보자. ※ 피보나치 수열은 0 부터 시작한다. int a = 0; //첫째 항 int b = 1; //둘째 항 int c = 0; // 셋째 항 = 출력값 for(int i = 1; i < 10; i++) { c = a + b; a = b; b = c; } // 피보나치는 0, 1, 1, 2, ... 순으로 커지기 때문에 // F0의 값은 a와 같고 F1..
2020.09.04 -
2020-09-04 팩토리얼 정의 수학에서, 자연수의 계승 또는 팩토리얼(階乘, 문화어: 차례곱, 영어: factorial)은 그 수보다 작거나 같은 모든 양의 정수의 곱이다. n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱을 n에 상대하여 이르는 말이다. 출처: 위키피디아 위와 같은 팩토리얼을 자바의 반복문인 for 과 while을 통해서 구해보도록 해보겠습니다! for문 사용 소스코드 ※ 특정 숫자의 팩토리얼을 알고 싶다면, i 의 범위 값을 조절하면 된다. ex) 5! 값은 i 값을 5로 바꾼뒤에 temp 출력 / 5! 까지의 합은 sum 출력 int temp = 1; //각 i에 다른 팩토리얼이 저장되는 값 // ex) i = 2 → 2! int sum = 0; //각 팩토리얼이 더해..
[Java] 자바 팩토리얼을 구해보자! / 1! + 2! + 3! . . . . + 10!의 합은?2020-09-04 팩토리얼 정의 수학에서, 자연수의 계승 또는 팩토리얼(階乘, 문화어: 차례곱, 영어: factorial)은 그 수보다 작거나 같은 모든 양의 정수의 곱이다. n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱을 n에 상대하여 이르는 말이다. 출처: 위키피디아 위와 같은 팩토리얼을 자바의 반복문인 for 과 while을 통해서 구해보도록 해보겠습니다! for문 사용 소스코드 ※ 특정 숫자의 팩토리얼을 알고 싶다면, i 의 범위 값을 조절하면 된다. ex) 5! 값은 i 값을 5로 바꾼뒤에 temp 출력 / 5! 까지의 합은 sum 출력 int temp = 1; //각 i에 다른 팩토리얼이 저장되는 값 // ex) i = 2 → 2! int sum = 0; //각 팩토리얼이 더해..
2020.09.04 -
2020-09-03 문제 상근이는 TGN사의 사장이다. TGN은 Teenager Game Network의 약자 같지만, 사실 Temporary Group Name의 약자이다. 이 회사는 청소년을 위한 앱을 만드는 회사이다. 일년에 걸친 개발기간 끝에 드디어 앱을 완성했고, 이제 팔기만 하면 된다. 상근이는 데이트를 인간의 두뇌로 이해할 수 없을 정도로 많이 한다. 따라서 엄청난 데이트 비용이 필요하다. 상근이는 광고를 적절히 해서 수익을 최대한 올리려고 한다. 어느 날 하늘을 바라보던 상근이는 시리우스의 기운을 받게 되었고, 광고 효과를 예측하는 능력을 갖게 되었다. 광고 효과가 주어졌을 때, 광고를 해야할지 말아야할지 결정하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 N이 주어진다...
백준 BaekJoon 5063번: TGN [Java] 자바2020-09-03 문제 상근이는 TGN사의 사장이다. TGN은 Teenager Game Network의 약자 같지만, 사실 Temporary Group Name의 약자이다. 이 회사는 청소년을 위한 앱을 만드는 회사이다. 일년에 걸친 개발기간 끝에 드디어 앱을 완성했고, 이제 팔기만 하면 된다. 상근이는 데이트를 인간의 두뇌로 이해할 수 없을 정도로 많이 한다. 따라서 엄청난 데이트 비용이 필요하다. 상근이는 광고를 적절히 해서 수익을 최대한 올리려고 한다. 어느 날 하늘을 바라보던 상근이는 시리우스의 기운을 받게 되었고, 광고 효과를 예측하는 능력을 갖게 되었다. 광고 효과가 주어졌을 때, 광고를 해야할지 말아야할지 결정하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 N이 주어진다...
2020.09.03 -
2020-09-02 문제 서강대학교 곤자가 기숙사의 지하에는 n개의 방이 일렬로 늘어선 감옥이 있다. 각 방에는 벌점을 많이 받은 학생이 구금되어있다. 그러던 어느 날, 감옥 간수인 상범이는 지루한 나머지 정신나간 게임을 하기로 결정했다. 게임의 첫 번째 라운드에서 상범이는 위스키를 한 잔 들이키고, 달려가며 감옥을 한 개씩 모두 연다. 그 다음 라운드에서는 2, 4, 6, ... 번 방을 다시 잠그고, 세 번째 라운드에서는 3, 6, 9, ... 번 방이 열려있으면 잠그고, 잠겨있다면 연다. k번째 라운드에서는 번호가 k의 배수인 방이 열려 있으면 잠그고, 잠겨 있다면 연다. 이렇게 n번째 라운드까지 진행한 이후, 상범이는 위스키의 마지막 병을 마시고 쓰러져 잠든다. 구금되어있는 몇 명(어쩌면 0명)의..
백준 BaekJoon 6359번: 만취한 상범 [Java] 자바2020-09-02 문제 서강대학교 곤자가 기숙사의 지하에는 n개의 방이 일렬로 늘어선 감옥이 있다. 각 방에는 벌점을 많이 받은 학생이 구금되어있다. 그러던 어느 날, 감옥 간수인 상범이는 지루한 나머지 정신나간 게임을 하기로 결정했다. 게임의 첫 번째 라운드에서 상범이는 위스키를 한 잔 들이키고, 달려가며 감옥을 한 개씩 모두 연다. 그 다음 라운드에서는 2, 4, 6, ... 번 방을 다시 잠그고, 세 번째 라운드에서는 3, 6, 9, ... 번 방이 열려있으면 잠그고, 잠겨있다면 연다. k번째 라운드에서는 번호가 k의 배수인 방이 열려 있으면 잠그고, 잠겨 있다면 연다. 이렇게 n번째 라운드까지 진행한 이후, 상범이는 위스키의 마지막 병을 마시고 쓰러져 잠든다. 구금되어있는 몇 명(어쩌면 0명)의..
2020.09.02 -
2020-08-31 이론 1부터 100까지의 수의 합을 구하는 방법 1 + 2 + 3 . . . . . . + 100 까지의 합을 손쉽게 코딩으로 구하는 방법을 알아보도록 하겠습니다. int sum, number; number = 0; sum = 0; // 우선적으로 1씩 더해줄 변수 number 선언 // 각 number가 더해질 sum변수를 선언합니다. do { number++; sum += number; }while(number
[Java] 자바 수열 연속합 구하기 1~100까지의 합구하기 / 자바수열2020-08-31 이론 1부터 100까지의 수의 합을 구하는 방법 1 + 2 + 3 . . . . . . + 100 까지의 합을 손쉽게 코딩으로 구하는 방법을 알아보도록 하겠습니다. int sum, number; number = 0; sum = 0; // 우선적으로 1씩 더해줄 변수 number 선언 // 각 number가 더해질 sum변수를 선언합니다. do { number++; sum += number; }while(number
2020.08.31 -
2020-08-31 거듭제곱 수학에서, 거듭제곱(승멱乗冪 또는 멱冪, exponentiation)은 주어진 수나 문자를 주어진 횟수만큼 여러 번 곱하는 이항연산이다. 이 주어진 수를 밑(영어: base)이라고 하고, 주어진 횟수를 지수(指數, 영어: exponent 또는 power, 문화어: 어깨수)라고 한다. 소스코드 int Two = 2; System.out.println(Math.pow(Two, 2)); //앞에는 제곱을 하고자하는 수 //뒤에는 제곱하고자 하는 만큼의 수를 입력해 준다. //출력값 : 4.0 System.out.println(Math.pow(Two, 3)); //출력값 : 8.0 제곱근 수학에서, 어떤 수의 제곱근(제곱根, 영어: square root)은 제곱하여 그 수가 되는 수..
[Java] 자바 제곱/제곱근을 구해보자! / 자바 제곱 제곱근 구하는법2020-08-31 거듭제곱 수학에서, 거듭제곱(승멱乗冪 또는 멱冪, exponentiation)은 주어진 수나 문자를 주어진 횟수만큼 여러 번 곱하는 이항연산이다. 이 주어진 수를 밑(영어: base)이라고 하고, 주어진 횟수를 지수(指數, 영어: exponent 또는 power, 문화어: 어깨수)라고 한다. 소스코드 int Two = 2; System.out.println(Math.pow(Two, 2)); //앞에는 제곱을 하고자하는 수 //뒤에는 제곱하고자 하는 만큼의 수를 입력해 준다. //출력값 : 4.0 System.out.println(Math.pow(Two, 3)); //출력값 : 8.0 제곱근 수학에서, 어떤 수의 제곱근(제곱根, 영어: square root)은 제곱하여 그 수가 되는 수..
2020.08.31