일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- half adder
- Algorithm
- stop watch
- DHT11
- KEYPAD
- prescaling
- i2c 통신
- pwm
- vivado
- verilog
- soc 설계
- Pspice
- atmega 128a
- uart 통신
- java
- D Flip Flop
- dataflow modeling
- gpio
- hc-sr04
- behavioral modeling
- ATMEGA128A
- LED
- Recursion
- structural modeling
- test bench
- BASYS3
- Linked List
- Edge Detector
- ring counter
- FND
- Today
- Total
목록java (41)
거북이처럼 천천히

클래스 정리 (1) 에서 클래스 정의에서 부터 객체 생성, 인스턴스 변수 활용, 배열 생성까지 다루어 보았다. 이번에는 Primitive data type과 Class의 차이점을 공부하여 좀 더 심도 있게 생각해보겠다. Primitive data type과 Class 차이점 클래스도 Primitive data 처럼 하나의 타입이지만, 중요한 차이점이 존재한다. Primitive 타입의 변수인 경우에는 그 변수안에 Primitive 타입의 데이터가 저장하게 된다. ex) int count 라는 변수가 존재한다면, count 변수안에는 0이라는 정수형 데이터가 저장하게 된다. ( 너무나도 당연한 이야기이다. ) 하지만, 사용자 정의 타입(=클래스 타입)의 변수인 경우에는 사용자 정의 타입의 "first" 변..
자바는 객체 지향 프로그래밍(OOP, Object-Oriented Programming)으로써 모든 데이터를 객체(Object)로 취급한다. 이때, 객체를 만들어 내기 위한 설계도, 틀과 비슷한 개념이 클래스(class)이다. 클래스(class) 자바에서 클래스는 객체를 정의하기 위한 틀, 객체를 생성하기 위한 설계도와 같은 의미로 사용한다. 따라서 객체를 생성하기 전, 객체를 정의하기 위한 틀인 클래스를 정의할 필요가 있다. 클래스와 객체와의 관계를 예시로 표현하자면 다음과 같다. 클래스 : 과자를 만들기 위한 틀 객체(=인스턴스) : 틀을 통해 만들어진 과자 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성되어있다. 클래스 생성 목표: 사람들의 이..

1. 문제 (배열내에서 소수 찾기) 2. 생각 배열내에서 시작점과 방향, 길이를 정의하고, for문을 이용하여 모든 경우에 대해서 생각한다. getDigit 메소드에 시작점(x, y)와 방향(dir), 길이(length)를 actual parameter로 전달하면 switch-case 문을 이용하여 방향(dir)의 값에 따른 다음 원소의 위치값(newX, newY)를 얻는다. 만약 다음 원소가 배열 밖을 벗어나면 -1을 return하여 다음 경우에 대해서 생각한다. 배열내에 존재한다면 해당 위치의 원소값을 반환한다. computeValue 메소드내에서 getDigit 메소드를 통해 얻은 다음 원소들을 하나의 숫자로 합치는 과정을 수행한다. 연속된 원소들로 이루어진 숫자를 main에 반환한다. isPrim..

문제점 발생 목표 : n개 정수를 입력받아 배열에 저장한 뒤, 버블정렬(Bubble sort) 알고리즘을 이용하여 오름차순 정렬후, 출력 import java.util.Scanner; public class programming { public static void swap(int a, int b) { int tmp = a; a = b; b = tmp; } public static int[] sortAscending(int[] data, int size) { for(int j=size-1; j>0; j--) for(int k=0; kdata[k+1]) { swap(data[k], data[k+1]); } return data; } public static void main(String[] args) { ..

1. 문제 (최대 소수값을 찾기) 2. 생각 배열의 사이즈를 입력과 배열의 원소들을 입력받아 변수와 배열에 각각 저장한다. for문을 이용하여 시작점(i)을 정의하고, 끝점(j)을 정의한다. 이전까지의 값에 10을 곱한 뒤, 새로운 원소를 더해가며 원소들을 합한다. (▶ sum = sum*10 + storage[j] ) 2부터 sum까지 for문과 나머지연산자를 이용하여 해당 숫자(sum)이 소수인지 판단 ( 소수가 아니면 isPrim = true, 소수이면 isPrim = false ) 만약, 해당 숫자(sum)이 소수인 동시에 max보다 크면 max값을 해당숫자로 대체한다. 결과 출력 3. 풀이 및 코드 분석 import java.util.Scanner; public class programming ..
이미 알고 있는 소수 판별법 이미 알고 있는 소수 판별법은 다음 두 가지 방법이었다. 문제 : 자연수 X이 소수인가? 반복문을 이용하여 자연수 X을 2 ~ X-1까지 나눠봐서 한 번이라도 나머지가 0인 경우가 나오면 자연수 X은 소수가 아니다. 약수는 쌍을 이룬다는 점을 이용하여 2 ~ X-1까지가 아닌 2 ~ X/2까지 나눠봐서 자연수 X이 소수인지 판별할 수 있다. 하지만, 2 ~ root(X)이하까지만 나눠봐도 해당 숫자가 소수인지를 효율적으로 판별할 수 있다고 한다. 직감적으로 "왜 root(X) 이하까지만 나눠도 되는가?"를 이해할 수 없어 수식적으로 증명해 보자 한다. 왜 root(X) 이하까지만 나눠도 되는가? 가정 : 자연수 X은 소수가 아닌 합성수이며, 자연수 X은 M * N으로 표현할 ..
1. 문제 (코딩도장, 이상한 계산기) https://codingdojang.com/scode/590?langby=java#answer-filter-area 코딩도장 프로그래밍 문제풀이를 통해서 코딩 실력을 수련 codingdojang.com 2. 생각 괄호가 없는 사칙연산 식을 입력받았을 때 오른쪽에서부터, 더하기나 빼기를 곱하기나 나누기보다 먼저 계산한 결과를 리턴하는 코드를 작성하라. (단, 사칙연산 식은 문자열의 형식으로 입력받는다) 문자열 형식으로 괄호가 없는 사칙연산 식을 입력받는다. 입력받은 식내에 공백(space)을 제거한다. while문과 for문을 이용하여 앞에서부터 문자열을 하나씩 쪼개서 해당 부분이 연산기호(+, -, /, *)인지 여부 확인 → 만약 해당 부분이 연산기호라면, 이전..
next(), nextLine() 이때까지 nextLine() 메소드는 한 줄단위로 입력받기 때문에 Enter 치기 전까지 쓴 모든 문자열을 반환하고, next() 메소드는 공백(space) 전까지 입력받은 문자열을 반환하다고 대략적으로만 알고 있었다. 하지만, next()와 nextLine()의 구체적인 차이점에 대해서 궁금증을 갖게 되었고, next()와 nextLine()의 정확한 차이점에 대해서 알아둘 필요가 있다고 생각하였다. next() 메소드 next() 메소드는 공백(space) 전까지 입력받은 문자 or 문자열을 읽는다. import java.util.Scanner; public class test { public static void main(String[] args) { Scanner..