반응형

안녕들 하시죠!

이번시간에는 백준 10828번 스택 문제를 풀어보겠습니다.

 

스택 이란?

제일 먼저 입력된 데이터가 맨 아래에 쌓이고 가장 최근에 입력된 데이터가 가장 위에 쌓이는 후입 선출(LIFO : Last-in First-out) 구조이다.

 

 

 

위에 있는 스택의 특성을 이용하여 코드를 작성했고, 함수를 이용했습니다.

코드에 문제가 있다면 댓글로 피드백 부탁드리겠습니다.  

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import java.util.Scanner;
 
public class hello {
    // 전역 변수 선언부
    static Scanner sc = new Scanner(System.in);
    static int totalNum = sc.nextInt(); // 명령의 수
    static int[] totalArr = new int[totalNum]; // 명령의 갯수만큼 배열 생성
    static int top = -1;
    //
    static void push() {
        top++;
        totalArr[top] = sc.nextInt();
    }
 
    static void pop() {
        if (top == -1) {
            System.out.println("-1");
        } else {
            System.out.println(totalArr[top]);
            top--;
        }
    }
 
    static void size() {
        System.out.println(top + 1);
    }
 
    static void empty() {
        if (top == -1) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
 
    static void top() {
        if (top != -1) {
            System.out.println(totalArr[top]);
        } else {
            System.out.println("-1");
        }
    }
 
    public static void main(String[] args) {
 
        String comm; // 사용자가 입력하는 명령을 저장하는 변수
        for (int i = 0; i < totalNum; i++) {
            comm = sc.next();
 
            if (comm.equals("push")) {
                push();
            }
 
            else if (comm.equals("pop")) {
                pop();
            }
 
            else if (comm.equals("size")) {
                size();
            }
 
            else if (comm.equals("empty")) {
                empty();
            }
 
            else if (comm.equals("top")) {
                top();
            }
        }
 
    }
}
cs

 

오늘은 여기까지입니다 감사합니다 !

 

참고서적 천인국, 공용해, 하상호 「c언어로 쉽게 풀어쓴 자료구조」

'알고리즘' 카테고리의 다른 글

Java) 입력받은 숫자 n까지의 소수갯수 구하기 + 최적 알고리즘  (0) 2019.09.27
Java 원형큐 구현  (0) 2019.06.23
Java 링크드리스트 구현  (0) 2019.06.22
백준 2750번 (버블정렬)  (0) 2019.05.01
백준 1000번  (0) 2019.04.16
반응형

안녕들 하시죠 !

이번시간에는 백준 2750번 정렬문제를 풀어보겠습니다.

 

이번 정렬문제에는 버블정렬을 사용하겠습니다.

 

버블 정렬

 

인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하는 비교-교환 과정을 리스트의 왼쪽 끝에서 시작하여 오른쪽 끝까지 진행한다.

한 번의 스캔에 의해 가장 큰 레코드가 리스트의 오른쪽 끝으로 이동하게 된다.

 

 

버블 정렬을 적용하여 백준 2750번 문제를 풀어보겠습니다.

 

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
import java.util.Scanner;
 
public class hello {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int[] number = new int[sc.nextInt()]; // 배열 크기를 입력받는다
        int sort = 0// 앞뒤 정수의 교환을 위한 변수
 
        for (int i = 0; i < number.length; i++) {
            number[i] = sc.nextInt(); // 각 배열에 정수 저장
        }
 
        for (int k = 0; k < number.length; k++) {
            for (int j = 0; j < number.length - 1; j++) { 
                if (number[j] > number[j + 1]) { // ex) 12 8 과 같이 앞에 있는 정수가 더 크다면 둘을 교환
                    sort = number[j];
                    number[j] = number[j + 1];
                    number[j + 1= sort;
                }
            }
        }
 
        for (int i = 0; i < number.length; i++) {
            System.out.println(number[i]);
        }
    }
}
cs

length 필드 사용법은 아래글을 참고하시면 됩니다.

2019/04/29 - [Java] - Java의 length필드 사용법

 

Java의 length필드 사용법

안녕들 하시죠! 이번시간에는 Java의 length필드 사용법에 대해 알아보겠습니다. 자바에서 length 필드란 배열의 저장 공간과 합계 배열의 크기 값을 가진 공간입니다. 1 int LArray[] = new int[4]; cs 위의 그..

hongpossible.tistory.com

 

버블정렬 출력에 성공했습니다.

오늘은 여기까지입니다 감사합니다 !

 

참고서적 천인국, 공용해, 하상호 「c언어로 쉽게 풀어쓴 자료구조」

'알고리즘' 카테고리의 다른 글

Java) 입력받은 숫자 n까지의 소수갯수 구하기 + 최적 알고리즘  (0) 2019.09.27
Java 원형큐 구현  (0) 2019.06.23
Java 링크드리스트 구현  (0) 2019.06.22
백준 10828번 (스택)  (0) 2019.05.10
백준 1000번  (0) 2019.04.16
반응형

안녕들 하시죠!

이번시간에는 Java의 생성자에 대해 알아보겠습니다.

 

생성자란?

객체가 생성될 때 자동으로 호출되는 메소드로써 객체의 초기화를 위해 실행된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
class Rectangle {
    int width;
    int height;
 
    public Rectangle() { // 매개변수 없는 생성자
        width = 1// 필드 초기화
    }
 
    public double getArea() { // 사각형의 면적 계산 메소드
        return width * height;
    }
}
cs

 

위의 코드에서는 Rectangle (사각형)이라는 클래스를 생성해 너비(width)와 높이(height) 필드를 생성했습니다.

그 밑에 public Rectangle() 이라는 생성자를 만들어 너비 필드를 1로 초기화했습니다.

double 형의 getArea() 메소드는 너비와 높이의 곱을 반환해 면적을 계산하는 역할을 합니다.

 

1
2
3
4
5
6
7
8
9
10
public class hello {
    public static void main(String[] args) {
 
        Rectangle rec = new Rectangle(); // Rectangle 객체 생성
        rec.height = 20// 높이를 20으로 초기화
        double area = rec.getArea(); // 면적을 계산하여 area 
        System.out.println(area); // 면적 출력
 
    }
}
cs

 

main문입니다.

객체 생성 후 width 값은 1로 초기화되어있는 것을 그대로 사용하고 height 값을 20으로 초기화하여 사용하는 부분입니다.

 

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
import java.util.Scanner;
 
class Rectangle {
    int width;
    int height;
 
    public Rectangle() { // 매개변수 없는 생성자
        width = 1// 필드 초기화
    }
 
    public Rectangle(int r, int n) { // 매개 변수를 가진 생성자
        width = r; height = n; // 매개 변수로 필드 초기화
    }
    
    public double getArea() { // 사각형의 면적 계산 메소드
        return width * height;
    }
}
 
public class hello {
    public static void main(String[] args) {
 
        Rectangle Rrec = new Rectangle(510); // 객체 생성. r에 5를 n에 10을 넣어 초기화.
        double area = Rrec.getArea();
        System.out.println(area);
 
    }
}
cs

 

11번 라인을 보시면 매개변수에 int형 r과 n을 넣었습니다.

main문에서 객체를 생성하고 초기화 할때 그 값을 지정해줄 수 있습니다.

또한, 이러한 경우에 매개변수 없는 기본 생성자를 지우게 된다면 컴파일러가 기본 생성자를 생성하기 때문에 문제는 없습니다.

 

주의할 점

* 생성자의 이름은 클래스 이름과 동일하다.

 

* 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.

 

* 생성자에 리턴 타입을 지정할 수 없다. 리턴값이 없다고 해서, void를 리턴 타입으로 지정해도 안된다.

 

* 생성자는 new를 통해 객체를 생성할 때 한번만 호출된다.

 

* 생성자는 여러 개 작성(오버로딩) 할 수 있다.

  매개변수의 개수와 타입만 다르다면, 클래스 내의 생성자를 여러 개 둘 수 있다.

  ex) public Rectangle()

       public Rectangle(int r, int n)

 

참고서적 황기태,김효수 「명품 JAVA Programming」

'Java' 카테고리의 다른 글

Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 추상 클래스  (0) 2019.05.11
Java의 length필드 사용법  (1) 2019.04.29
Java의 변수와 데이터타입 (Data type)  (0) 2019.04.21
JDK & Eclipse 설치  (0) 2019.04.21
반응형

 

안녕들 하시죠!

이번시간에는 Java의 length필드 사용법에 대해 알아보겠습니다.

 

자바에서 length 필드란 배열의 저장 공간과 합계 배열의 크기 값을 가진 공간입니다.

1
int LArray[] = new int[4];
cs

위의 그림과 같이 배열 4개를 생성한 후, 배열의 크기를 알아보기위해 length 필드를 사용합니다.

1
int ArraySize = LArray.length;
cs

ArraySize 변수에 LArray 배열의 크기를 넣어 출력해보면 배열의 크기 (4)가 출력되게됩니다.

 

이러한 length 필드는 배열의 크기만큼 반복할때 유용합니다.

예를들어 배열 크기만큼 정수를 입력받고 합을 구하는 프로그램을 살펴보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class hello {
    public static void main(String[] args) {
    
        int LArray[] = new int[4]; // 배열 선언과 생성
        int sum = 0// 합계를 저장할 변수
        Scanner sc = new Scanner(System.in);
 
        System.out.println(LArray.length + " 개의 정수를 입력하시오 >> ");
 
        for (int i = 0; i < LArray.length; i++) {
            LArray[i] = sc.nextInt(); // 입력받은 값을 배열에 순서대로 저장
            sum += LArray[i]; // 배열에 저장된 값을 sum 변수에 저장
        }
 
        System.out.println("합계는 = " + sum);
    }
}
cs

위의 예제를 통해 for문의 반복에 length 필드를 이용하면 배열의 크기를 몰라도 된다는 것을 알 수 있습니다.

오늘은 여기까지입니다 감사합니다 !

 

 

참고서적 황기태,김효수 「명품 JAVA Programming」

 

'Java' 카테고리의 다른 글

Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 추상 클래스  (0) 2019.05.11
Java의 생성자  (0) 2019.04.29
Java의 변수와 데이터타입 (Data type)  (0) 2019.04.21
JDK & Eclipse 설치  (0) 2019.04.21
반응형

안녕들 하시죠 !

이번시간에는 Java의 변수와 데이터 타입에 대해 알아보겠습니다.

 

 

변수란?

 

데이터를 저장하는 공간.

프로그램이 실행 중에 값을 쓰고 읽는 공간으로 사용함.

 

변수의 선언

 

1
2
3
int Number = 400// int 형 Number변수에 400 저장.
char Name1 = 'hong', Name2 = 'possible'// 2개의 문자 변수 Name1, Name2 선언과 동시에 초깃값 지정.
double height = '190.5'// 실수형 double변수에 실수 190.5 저장.
cs

 

int 데이터 타입의 Number 이라는 박스를 만든다고 생각하면 편합니다.

Number에는 정수형 데이터만 담을 수 있기때문에 실수인 10.8같은 경우에는 담을 수 없습니다.

 

 

Java의 기본 타입

 

정수 타입 int 4바이트 -2^31 ~ 2^31-1
short 2바이트 -32768 ~ 32767
long 8바이트 -2^63 ~ 2^63-1
byte 1바이트 -128 ~ 127
실수 타입 float 4바이트 -3.4E38 ~ 3.4E38
double 8바이트 -1.7E308 ~ 1.7E308
문자 타입 char 2바이트 Unicode
논리 타입 boolean 1비트 true or false

 

 

참고서적 황기태,김효수 「명품 JAVA Programming」

 

'Java' 카테고리의 다른 글

Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 추상 클래스  (0) 2019.05.11
Java의 생성자  (0) 2019.04.29
Java의 length필드 사용법  (1) 2019.04.29
JDK & Eclipse 설치  (0) 2019.04.21
반응형

 

안녕들 하시죠!

이번시간에는 JDK 와 Eclipse 설치에 대해 알아보겠습니다.

JDK에는 Java 개발 환경을 구축하기위한 요소들이 들어 있기에 먼저 설치해줘야 합니다.

 

JDK 설치

 

아래의 jdk download URL로 들어가세요.

https://www.oracle.com/technetwork/java/javase/downloads/index.html

스크롤을 내려 Java SE 8u211 버전을 다운받겠습니다.

 

Accept License Agreement 체크 -> 본인 PC사양에 맞는 파일을 다운받아주세요.

 

JDK는 설치 완료되었습니다.

이제 eclipse를 설치해보겠습니다.

아래의 URL로 들어가면 됩니다.

https://www.eclipse.org/

 

 

용도에 따라 다르겠지만, 저는 웹개발에도 사용할 것이기 때문에 Eclipse IDE for Enterprise Java Developers를 선택했습니다.

 

다음과 같은 화면이 나오면 Accept를 누르면 설치 진행됩니다.

 

 

이클립스에서 작업한 결과물을 저장할 폴더를 선택해주세요.

 

자, 이렇게 이클립스가 설치 완료되었습니다.

오늘은 여기까지입니다 감사합니다 !

'Java' 카테고리의 다른 글

Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 추상 클래스  (0) 2019.05.11
Java의 생성자  (0) 2019.04.29
Java의 length필드 사용법  (1) 2019.04.29
Java의 변수와 데이터타입 (Data type)  (0) 2019.04.21
반응형

 

안녕들 하시죠 !

이번시간에는 티스토리 ZUM 노출에 대해 알아보겠습니다.

아래에 있는 URL로 들어가시면 ZUM 사이트 검색 등록이 나오게되고 구글에 비해 간단합니다.

 

http://help.zum.com/submit

 

 

신규등록으로 들어가시면 됩니다.

 

본인 블로그 정보를 입력하세요.

 

정보 작성 후, 정보수집 동의와 신청하기를 누르면 사이트 검색등록 완료 메일을 받을 수 있습니다.

ZUM에서는 직접 제 블로그를 검토한 후 직접 등록한다고합니다.

 

오늘은 여기까지입니다 감사합니다 !

반응형

안녕들 하시죠 ! 

이번시간에는 티스토리 구글 노출에 대해 알아보겠습니다.

아래의 URL은 구글 웹마스터 도구 사이트입니다.

https://www.google.com/webmasters/#?modal_active=none

 

SEARCH CONSOLE 탭으로 들어가주세요.

 

URL 접두어 부분에 본인 블로그 주소를 넣은 후 계속을 누릅니다.

 

HTML 태그 부분의 코드를 복사하고 아직 완료는 누르지 마세요.

그 다음, 티스토리의 스킨편집 -> HTML 편집 부분으로 갑니다.

 

 HTML 편집 부분에서 아까 복사한 코드를 <head> 밑에 붙여넣으신 후, 적용을 누르시면 됩니다.

적당히 편한곳에 넣으시면 됩니다.

이제 다시 코드를 복사했던 구글 서치 콘솔의 '소유권 확인' 탭으로 가서 완료를 눌러줍니다.

이제 사이트맵만 하나 추가해보겠습니다.

 

왼쪽 ① Sitemaps로 들어가 ② 공란에 rss를 입력하고 제출을 누르면 등록이 됩니다.

왼쪽 맨 위 개요탭에 들어가게되면 실적, 적용범위, 개선사항 등을 볼 수 있습니다.

 

오늘은 여기까지입니다 감사합니다 !

'꿀팁' 카테고리의 다른 글

단기간 토익 700 꿀팁  (0) 2019.05.11
티스토리 ZUM 노출  (0) 2019.04.21
[구글 애드센스] 티스토리 사이드바 광고넣기  (0) 2019.04.20
Visual studio scanf 에러  (0) 2018.12.11
Visual studio 콘솔 에러 해결법  (0) 2018.12.11

+ Recent posts