<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>heajin0305_.log</title>
        <link>https://velog.io/</link>
        <description>안녕하세요</description>
        <lastBuildDate>Sun, 22 May 2022 07:01:45 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. heajin0305_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/heajin0305_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[클래스 - 상속(extends)]]></title>
            <link>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8Dextends</link>
            <guid>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8Dextends</guid>
            <pubDate>Sun, 22 May 2022 07:01:45 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-클래스간의-상속이란-">📌 클래스간의 상속이란 ?</h3>
<blockquote>
<ul>
<li>클래스 간의 상속이란?<pre><code>-&gt; 클래스간에는 부모-자식의 상속 관계를 설정할 수 있다.</code></pre>-&gt; 부모 클래스 A를 자식 클래스 B가 상속받을 때, B는 A의 모든 멤버변수와 메서드를 자신의 것으로 상속받게 된다. (단, private으로 설정된 기능은 상속되지 않는다.)
-&gt; B는 A의 public, protected 기능들은 직접적으로 코딩하지 않더라도    자신의 것으로 사용할 수 있게 된다.</li>
</ul>
</blockquote>
<h3 id="📌-상속-정의-방법">📌 상속 정의 방법</h3>
<blockquote>
<ul>
<li>extends 키워드를 사용하여 부모 클래스의 이름을 명시한다.</li>
</ul>
</blockquote>
<pre><code class="language-java">public class 자식클래스 extends 부모클래스 { ... }</code></pre>
<h3 id="📌-클래스-다이어그램을-통한-상속의-표현">📌 클래스 다이어그램을 통한 상속의 표현</h3>
<blockquote>
<ul>
<li>클래스의 구조를 표현하는 클래스 다이어그램에서, 상속은 자식 클래스가 부모 클래스를 가리키는 화살표로 표현한다.</li>
</ul>
</blockquote>
<ul>
<li>클래스 다이어그램에는 상속관계, 클래스이름, 생성자, 메서드 등을 표현한다.</li>
<li>상속관계가 이루어 질 때 부모클래스를 super 클래스라 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/cbfd2cf5-31e4-44d5-9de4-d0772a3485bb/image.png" alt=""></li>
</ul>
<h3 id="📌-상속의-활용">📌 상속의 활용</h3>
<blockquote>
<ul>
<li>기존에 존재하는 클래스의 소스 수정없이 기능을 확장하고자 하는 경우
-&gt; CalcChild 클래스는 CalcParent 클래스를 상속받기 때문에, 별도의 소스코딩 없이도 plus() 메서드와 minus() 메서드를 포함하게 된다
-&gt; CalcChild 클래스에 times()메서드와 divide() 메서드를 추가하면, 상속받는 메서드에 새로운 기능을 추가하는 효과를 얻을 수 있다.</li>
</ul>
</blockquote>
<pre><code class="language-java">// CalcParent 클래스
package extandsclass;
// 덧셈과 뺄셈의 기능을 갖는 클래스를 준비한다
public class CalcParent {
    // 생성자를 특별히 정의하지 않은 경우
    // 자바 컴파일러가 기본 생성자가 있다고 간주하기 때문에,
    // 클래스 다이어그램에서는 기본 생성자를 명시한다
    public int plus(int x, int y) {
        return x + y;
    }
    public int minus(int x, int y) {
        return x - y;
    }
}
// -------------------------------------------
// CalcChild클래스
package extandsclass;
// CalcParent를 상속받는 클래스
// 부모의 모든 기능을 상속받고 있으며,
// 곱셈과 나눗셈을 추가하여 부모의 기능을 확장
public class CalcChild extends CalcParent{
    public int times(int x, int y) {
        return x * y;    
    }
    public int divide(int x, int y) {
        int result = 0;
        if(y != 0) {
            result = x / y;
        }    
        return result;
    }
}
// -------------------------------------------
// 출력 Main클래스
package extandsclass;
public class Main01 {
    public static void main(String[] args) {
        CalcParent parent = new CalcParent();
        System.out.println(parent.plus(100, 50));
        System.out.println(parent.minus(100, 50));
        System.out.println(&quot;------------------------------&quot;);
        CalcChild child = new CalcChild();
        System.out.println(child.divide(200, 100));
        System.out.println(child.times(200, 100));
        System.out.println(child.plus(200, 100));
        System.out.println(child.minus(200, 100));    
    }    
}</code></pre>
<ul>
<li>여러개의 클래스에서 공통되는 기능을 추출하여 공유하기
-&gt; 질문/ 답변 게시물의 한 단위를 표현하기 위한 QNAArticle 클래스와 자료실의 게시물을 표현하기 위한 FileArticle은 글 번호와 제목이라는 공통된 특성을 갖는다
-&gt; Article 클래스는 QNAArticle 클래스와 FileArticle 클래스가 공통적으로 포함하고 있는 멤버변수인 &quot;글번호(num)&quot;, &quot;제목(title)&quot;과 이 변수들에
대한 getter, setter를 추출한 것이다
-&gt; 이와 같이 공통 기능을 별도의 클래스로 추출해 내면, 코드의 재사용 및 수정이 용이하다<pre><code class="language-java">// Article 클래스
package extandsclass;
/*
* 게시판의 일반적인 기능을 구현한다
* 자료실과 질문/답변 게시판은 기본적인 게시판의 기능을 포함하고 있기 때문에,
* 이 클래스는 두 가지 클래스의 공통 기능을 추출한 개념이다
*/
public class Article {
private int num;         // 글번호
private String title;     // 제목
public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}    
}
// -------------------------------------------
// QNAArticle 클래스
package extandsclass;
/*
* Article 클래스 상속받고, 
* 부모클래스의 title을 질문으로 보고, 답변을 추가
* main 메서드를 포함하고 있는 class생성, 
* 글번호, 질문(글 제목), 답변 데이터 set
* 글번호, 질문(글 제목), 답변 데이터 get으로 출력
*/
public class QNAArticle extends Article{
private String answer;
public String getAnswer(){
    return answer;
}
public void setAnswer(String answer) {
    this.answer = answer;
}
public String toString() {
    return &quot;질문/답변 [글번호 = &quot; + getNum() 
        + &quot;, 제목 = &quot; + getTitle()
        + &quot;, 답변 = &quot; + getAnswer();
}
}
// -------------------------------------------
// FileArticle 클래스
package extandsclass;
public class FileArticle extends Article {
private String fileName;
public String getFileName() {
    return fileName;
}
public void setFileName(String fileName) {
    this.fileName = fileName;
}
public String toString() {
    return &quot;자료실[번호 = &quot; + getNum()
    + &quot; , 제목 = &quot;+ getTitle()
    + &quot; , 첨부파일 = &quot; + getFileName()
    + &quot; ] &quot;;
}
}
// -------------------------------------------
// 출력 Main클래스
package extandsclass;
public class Main02 {
public static void main(String[] args) {
    QNAArticle qna = new QNAArticle();
    qna.setNum(1);
    qna.setTitle(&quot;첫 번째 질문입니다.&quot;);
    qna.setAnswer(&quot;첫 번째 답변입니다.&quot;);
//        System.out.println(qna.getNum());
//        System.out.println(qna.getTitle());
//        System.out.println(qna.getAnswer())    
    System.out.println(&quot;질문/답변 [글번호 = &quot; + qna.getNum() 
    + &quot;, 제목 = &quot; + qna.getTitle() 
    + &quot;, 답변 =&quot; + qna.getAnswer());
    System.out.println(qna.toString());
System.out.println(&quot;=========================================&quot;);
    FileArticle file = new FileArticle();
    file.setNum(10);
    file.setTitle(&quot;10번째 자료입니다.&quot;);
    file.setFileName(&quot;dat10.ppt&quot;);
    System.out.println(file.toString())    
}    
}
</code></pre>
</li>
</ul>
<p>```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] - 달팽이는 올라가고 싶다.]]></title>
            <link>https://velog.io/@heajin0305_/%EB%B0%B1%EC%A4%80-%EB%8B%AC%ED%8C%BD%EC%9D%B4%EB%8A%94-%EC%98%AC%EB%9D%BC%EA%B0%80%EA%B3%A0-%EC%8B%B6%EB%8B%A4</link>
            <guid>https://velog.io/@heajin0305_/%EB%B0%B1%EC%A4%80-%EB%8B%AC%ED%8C%BD%EC%9D%B4%EB%8A%94-%EC%98%AC%EB%9D%BC%EA%B0%80%EA%B3%A0-%EC%8B%B6%EB%8B%A4</guid>
            <pubDate>Sun, 15 May 2022 08:32:31 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-문제">📌 문제</h3>
<blockquote>
<p>땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.</p>
</blockquote>
<h3 id="📌-입력">📌 입력</h3>
<blockquote>
<p>첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B &lt; A ≤ V ≤ 1,000,000,000)</p>
</blockquote>
<h3 id="📌-출력">📌 출력</h3>
<blockquote>
<p>첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/22e61916-7ae6-4cfe-9e80-9c522648cf8b/image.png" alt=""></p>
</blockquote>
<h3 id="📌-코드">📌 코드</h3>
<pre><code class="language-java">package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class test1 {
    public static void main(String[] args) throws IOException {

//         스캐너 사용
//        Scanner in = new Scanner(System.in);
//        
//        int a = in.nextInt(); // 달팽이가 낮에 올라가는 미터
//        int b = in.nextInt(); // 밤에 자는동안 미끄러지는 미터
//        int v = in.nextInt(); // 나무막대의 높이
//        
//        int day = (v - b) / (a - b);
//        
//        if((v - b) % (a - b) != 0) {
//            day++;
//        }
//    
//        System.out.println(day);

//         버퍼 사용                
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), &quot; &quot;);

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int v = Integer.parseInt(st.nextToken());

        int day = (v - b) / (a - b);

        if((v - b) % (a - b) != 0) {
            day++;
        }

        System.out.println(day);

    }
}</code></pre>
<p>&lt;출처 : <a href="https://www.acmicpc.net/problem/2869">https://www.acmicpc.net/problem/2869</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] - 방 번호 ]]></title>
            <link>https://velog.io/@heajin0305_/%EB%B0%B1%EC%A4%80-%EB%B0%A9-%EB%B2%88%ED%98%B8</link>
            <guid>https://velog.io/@heajin0305_/%EB%B0%B1%EC%A4%80-%EB%B0%A9-%EB%B2%88%ED%98%B8</guid>
            <pubDate>Sun, 15 May 2022 08:25:47 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-문제">📌 문제</h3>
<blockquote>
</blockquote>
<p>다솜이는 은진이의 옆집에 새로 이사왔다. <br>다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다.
한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 
다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오.
(6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)</p>
<h3 id="📌-입력">📌 입력</h3>
<blockquote>
<p>첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.</p>
</blockquote>
<h3 id="📌-출력">📌 출력</h3>
<blockquote>
<p>첫째 줄에 필요한 세트의 개수를 출력한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/a71c4db0-ad10-4f98-93e4-0e01005bbc5b/image.png" alt=""><img src="https://velog.velcdn.com/images/heajin0305_/post/b9b6645f-653e-479a-b227-58d514f1002c/image.png" alt=""></p>
</blockquote>
<h3 id="📌-코드">📌 코드</h3>
<pre><code class="language-java">package test;
import java.util.Scanner;
public class test2 {    
    public static void main(String[] args)     
        Scanner sc = new Scanner(System.in);
        // 문자열로 입력받기
        String st = sc.nextLine();
        // 6을 9으로 교체
//        st = st.replaceAll(&quot;9&quot;, &quot;6&quot;);
        st = st.replaceAll(&quot;6&quot;, &quot;9&quot;);
        // 0~9 까지 10개의 int배열
        int[] arr = new int[10];
        // 최댓값 변수 선언
        int max = 0;
        for(int i = 0; i &lt; st.length(); i++) {
            // 숫자에 해당하는 배열 인덱스의 값을 ++함
            // -48 을 하는 이유 : 0의 아스키코드값
            int num = (int)(st.charAt(i)-48);
            arr[num]++;
        }
        // 9의 경우
        if(arr[9] != 0) {
            // 6를 포함하기 때문 2로 나눈후 
            // 반올림을 하여 인덱스 9의 값을 바꿔줌
            arr[9] = Math.round(arr[9]/2.0f);
        }
        for(int i = 0; i &lt; arr.length; i++) {
            // int배열을 확인하면서 최대값을 구함
            max = Math.max(arr[i], max);
        }
        System.out.println(max);
    }
}</code></pre>
<p>&lt;출처 : <a href="https://www.acmicpc.net/problem/1475">https://www.acmicpc.net/problem/1475</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[클래스 - 은닉성, 캡슐화]]></title>
            <link>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%80%EB%8B%89%EC%84%B1-%EC%BA%A1%EC%8A%90%ED%99%94</link>
            <guid>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%80%EB%8B%89%EC%84%B1-%EC%BA%A1%EC%8A%90%ED%99%94</guid>
            <pubDate>Thu, 12 May 2022 07:37:41 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-은닉성이란-">📌 은닉성이란 ?</h3>
<blockquote>
<ul>
<li>멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법</li>
</ul>
</blockquote>
<ul>
<li>객체를 사용하는 측의 실수로 인한 기능의 오작동을 방지하기 위해,  클래스 일부를 숨기는 처리를 말한다.</li>
</ul>
<h3 id="📌-접근한정자">📌 접근한정자</h3>
<blockquote>
<ul>
<li>변수 이름이나 메서드 이름앞에 &quot;접근 한정자&quot;를 지정한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/441e8f2d-7fef-4cfc-892b-230e519b1f69/image.png" alt=""></li>
</ul>
</blockquote>
<pre><code class="language-java">package hiding;
class Student{
    public String name = &quot;자바학생&quot;;
    private int weight = 100;
}
public class Main01 {
    public static void main(String[] args) {
        Student std = new Student();
        // public 이므로 접근 가능
        System.out.println(std.name);
        // private 이므로 접근 불가능
        // System.out.println(std.weight
    }    
}</code></pre>
<h3 id="📌-클래스와-접근한정자">📌 클래스와 접근한정자</h3>
<blockquote>
<ul>
<li>클래스에 접근 한정자를 지정한 경우<img src="https://velog.velcdn.com/images/heajin0305_/post/e72eb681-07fd-43c8-bec2-64003dd61bfb/image.png" alt=""><br><ul>
<li>클래스의 분리
--&gt; 하나의 소스코드에서 프로그램의 모든 기능을 구현하게 되면 유지보수에 비효율적 이므로, 기능단위로 소스코드를 분리해야 한다.
--&gt; 소스코드가 분리된 클래스끼리는 public이 명시되어야만 서로 객체 생성이 가능하다.
--&gt; 일반적으로 클래스 정의에는 public 접근 한정자만 사용한다.
--&gt; 하나의 소스코드에는 하나의 public 클래스만 존재할 수 있다.</li>
</ul>
</li>
</ul>
</blockquote>
<h3 id="📌-멤버변수의-은닉처리">📌 멤버변수의 은닉처리</h3>
<blockquote>
<ul>
<li>거의 대부분의 멤버변수는 은닉처리를 기본으로 한다.</li>
</ul>
</blockquote>
<h3 id="📌-getter-setter">📌 getter, setter</h3>
<blockquote>
<ul>
<li>멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라진다.</li>
</ul>
</blockquote>
<ul>
<li>메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 한다.</li>
<li>getter, setter는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드들을  의미하는 용어이다.<img src="https://velog.velcdn.com/images/heajin0305_/post/5fc91e7e-4172-4892-9c2b-f0a3597bacee/image.png" alt=""></li>
<li>메서드 작성 예<img src="https://velog.velcdn.com/images/heajin0305_/post/319a7dd9-8343-4e29-bb21-8edf6a805d14/image.png" alt=""></li>
<li>&#39;get&#39;, &#39;set&#39; 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시</li>
<li>getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시</li>
<li>setter는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시<pre><code class="language-java">package hiding;
class StudentJava2{
// 은닉된 멤버변수 -&gt; 현재 블록 안에서만 접근가능함
private String name;
private int age;    
// getter 메서드 2개
// 은닉된 멤버변수의 값을 읽는 방법
public String getName() {
   return this.name;
}
public int getAge() {
   return this.age;
}    
// setter 메서드 2개
// 은닉된 멤버변수에 값을 넣는 방법
public void setName(String name) {
   this.name = name;
}
public void setAge(int age) {
   this.age = age;
}        
}
public class Main03 {
public static void main(String[] args) {
   // 객체생성
   StudentJava2 sj = new StudentJava2();        
   // setter 임의의 데이터 세팅, name, age 모두
   sj.setName(&quot;JAVA학생&quot;);
   sj.setAge(20);        
   // getter 출력, name, age 모두
   System.out.println(sj.getName());
   System.out.println(sj.getAge())    
}
}</code></pre>
</li>
</ul>
<h3 id="📌-자바빈즈javabeans">📌 자바빈즈(JavaBeans)</h3>
<blockquote>
<ul>
<li>자바 언어에서 사용하는 복합적인 데이터 표현의 최소 단위로서, 재사용 가능한 컴포넌트(구성요소)를 생성할 수 있다.</li>
</ul>
</blockquote>
<ul>
<li>자바빈즈 클래스로서 작동하기 위해서, 객체 클래스는 명명법, 생성법 그리고 행동에 관련되어 일련의 관례를 따라야만 한다. </li>
<li>지켜야할 관례
 -&gt; 클래스는 생성자를 가지고 있어야한다.
-&gt; 클래스 속성들은  getter, setter 메서드들을 사용해 접근할 수 있어야 한다.</li>
</ul>
<h3 id="📌-캡슐화-자바빈즈-사용이유">📌 캡슐화 (자바빈즈 사용이유)</h3>
<blockquote>
<ul>
<li>접근 제한자는 객체지향의 캡슐화, 그리고 그를 통한 은닉화를 위한 도구이다. </li>
</ul>
</blockquote>
<ul>
<li>데이터를 외부로부터 숨기거나, 접근을 막고, 또는 접근에 처리를 강제화한다.</li>
<li>유사한 기능이나 변수를 한 집합으로 하여 더 관리하기 쉽게하고 코드를 명확히 함</li>
<li>외부에서 멤버를 엑세스하는 방법을 지정할 수 있도록, 직접 접근을 막거나 접근 전
부가적인 처리를 요구함</li>
<li>정보를 외부에 은닉하여 외부에서는 해당 집합의 세부 내용에 집중하지 않도록 함<pre><code class="language-java">class Person{
    int age;
    void howOld(){
        system.out.println( age );
    }
}
class Main{
    public static void main( String[] args ){
        Person p1 = new Person();
        p1.age = -1;
        p1.howOld();
    }
}
//------------------------------------------------------------------
// setter는 이렇게 변수의 값 대입이 여러 곳에서, 제한 없이 가능한 것을 접근 제한자로 막고,
// 접근 범위에 한해서 메소드로 대입전 값을 처리 후 대입되게 하기 위해 사용된다.
        class Person{
        private int age;
        public void setAge( int age ){
            if( age &gt;= 0 ){
                this.age = age;
            } else {
                this.age = 0;
            }
        }
        void howOld(){
            system.out.println( age );
        }
    }
class Main{
    public static void main( String[] args ){
        Person p1 = new Person();
        p1.age = -1;
        p1.howOld();
    }
}
/* 변수의 접근을 private로 처리해서 해당 클래스 안에서만 노출되게 바꾸고, 
다른 사람들도 사용할 필요가 있는 변수들만 getter를 이용해서 드러냈다.
이렇게 변수들의 외부 노출을 제한하고, 노출 범위를 정해주는 것이 getter */
class Person{
    private int age;
    private String name;
    private String hobby;
    private String gender;
    public void setGender( String gender ){
        this.gender = gender;
    }
    public void setAge( int age ){
        if( age &gt;= 0 ){
            this.age = age;
        } else {
            this.age = 0;
        }
    }
    void howOld(){
        system.out.println( age );
    }
}</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[클래스 - this, 규칙]]></title>
            <link>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-this-%EA%B7%9C%EC%B9%99</link>
            <guid>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-this-%EA%B7%9C%EC%B9%99</guid>
            <pubDate>Sun, 08 May 2022 13:26:28 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-this-란-">📌 this 란 ?</h3>
<blockquote>
<ul>
<li>클래스안에서 &quot;자기자신&quot;을 표현하는 키워드</li>
</ul>
</blockquote>
<h3 id="📌-this를-사용하여-지역변수와-멤버변수전역변수-구분하기">📌 this를 사용하여 지역변수와 멤버변수(전역변수) 구분하기</h3>
<blockquote>
<ul>
<li>멤버변수와 지역변수가 동일한 이름으로 공존할 경우, 유효성 범위가 작은 변수가 우선적으로 인식된다.</li>
</ul>
</blockquote>
<pre><code class="language-java">class Student{
        String name;
        public void setName(){
            String name;
            name = &quot;자바학생&quot;;        // 현재 지역변수 name
            this.name = &quot;JSP학생&quot;;    // 클래스 멤버변수로 선언된  name
        }
    }</code></pre>
<ul>
<li>this를 사용하여 파라미터와 멤버변수 구하기
<tab>    -&gt; 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종이다.
-&gt; 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고자 할 경우, 이름은 동일하게 지정하고 this 키워드를 사용하여 멤버변수와 파라미터를 구별하는 것이    java언어의 일반적인 처리 방식이다.<pre><code class="language-java">class Student{
    String name;
    public void setName( String name ){
        this.name = name;
    }        
}</code></pre>
<ul>
<li>모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이
소스코드의 가독성을 위하여 바람직하다.</li>
</ul>
</li>
</ul>
<h3 id="📌--this를-사용한-간단한-예제">📌  this를 사용한 간단한 예제</h3>
<blockquote>
<ul>
<li>StudentUser 클래스를 사용해서 객체를 생성 후 객체의 메서드 만을 사용해서 전역변수 name에 &quot;자바학생&quot;을 할당하고 출력하여라.</li>
</ul>
</blockquote>
<pre><code class="language-java">package object;
class studentUser{
      String name;    
    public void setName(String name) {
        this.name = name;
    }    
    public String getName() {
        return this.name;
    }
}
public class Main06 {
    public static void main(String[] args) {
        // 객체생성
          studentUser su = new studentUser();
        // 전역변수 name에 &quot;자바학생&quot;할당
          su.setName(&quot;자바학생&quot;);
        System.out.println(su.getName());    
    }    
}</code></pre>
<h3 id="📌-현재-클래스의-메서드를-의미하는-용도로서의-this">📌 현재 클래스의 메서드를 의미하는 용도로서의 this</h3>
<blockquote>
<ul>
<li>메서드의 경우 this.getName()이 아닌, getName()만 사용하더라도 코드 가독성의  문제는 없다.</li>
</ul>
</blockquote>
<h3 id="📌-this-키워드를-활용한-멤버변수와-메서드의-접근">📌 this 키워드를 활용한 멤버변수와 메서드의 접근</h3>
<blockquote>
<ul>
<li>멤버변수는 지역변수와 구별하기 위하여 가급적 this를 통하여 접근한다.</li>
</ul>
</blockquote>
<ul>
<li>메서드에 접근할 때 this 키워드를 사용하는 것이 필수적인 것은 아니다.</li>
</ul>
<h3 id="📌--클래스-메서드-상수의-공통-이름-규칙">📌  클래스, 메서드, 상수의 공통 이름 규칙</h3>
<blockquote>
<ul>
<li>영어, 숫자, 언더바(_)의 조합, 첫 글자는 반드시 영어로 표기한다.</li>
</ul>
</blockquote>
<h3 id="📌--클래스의-이름-규칙">📌  클래스의 이름 규칙</h3>
<blockquote>
<ul>
<li>첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다.</li>
</ul>
</blockquote>
<ul>
<li>두 개 이상의 단어를 조합해야 할 경우 새로운 단어는 대문자로 시작한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/7d7ee574-0080-4d28-9e77-4b13a4b1a161/image.png" alt=""></li>
</ul>
<h3 id="📌--메서드-변수-이름-규칙">📌  메서드, 변수 이름 규칙</h3>
<blockquote>
<ul>
<li>대부분 소문자로 구성되지만, 두 개 이상의 단어를 조합할 경우 새로운 단어는 대문자로 표기한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/e91ce1c5-e59d-4a20-b082-7076d9722b54/image.png" alt=""></li>
</ul>
</blockquote>
<h3 id="📌--상수-이름-규칙">📌  상수 이름 규칙</h3>
<blockquote>
<ul>
<li>모두 대문자로 표시한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/ebe25698-20f7-457e-a414-82f7969914e4/image.png" alt=""></li>
</ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[클래스 - 객체, 멤버변수]]></title>
            <link>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%A9%A4%EB%B2%84%EB%B3%80%EC%88%98</link>
            <guid>https://velog.io/@heajin0305_/%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%A9%A4%EB%B2%84%EB%B3%80%EC%88%98</guid>
            <pubDate>Sun, 08 May 2022 11:24:00 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-객체object란">📌 객체(Object)란?</h3>
<blockquote>
<ul>
<li>프로그래밍에서의 객체는 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위</li>
</ul>
</blockquote>
<h3 id="📌-객체를-구성하는-단위">📌 객체를 구성하는 단위</h3>
<blockquote>
<ul>
<li>객체를 이루는 것은 데이터와 기능이다.</li>
</ul>
</blockquote>
<ul>
<li>데이터는 변수로 표현된다.</li>
<li>객체안에 포함된 변수를 &#39;멤버변수&#39; 혹은 &#39;프로퍼티&#39;라 한다.</li>
<li>기능은 메서드(=함수)로 표현된다.</li>
</ul>
<h3 id="📌-클래스와-객체의-관계">📌 클래스와 객체의 관계</h3>
<blockquote>
<ul>
<li>객체를 생성하기 위해서 객체의 설계도가 필요하다.</li>
</ul>
</blockquote>
<ul>
<li>객체의 설계도 역할을 하는 프로그램 소스 -&gt; 클래스(Class)</li>
<li>공장에서 하나의 설계도를 사용하여 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러 개 생성할 수 있다.<ul>
<li>자동차의 엔진, 문, 바퀴 등은 멤버변수로 존재할 수 있다.</li>
<li>전진, 후진 등은 메서드의 형태로 표현된다.</li>
</ul>
</li>
</ul>
<h3 id="📌-자동차-클래스의-예">📌 자동차 클래스의 예</h3>
<blockquote>
<ul>
<li>동일한 설계로 만들어진 자동차라 하더라도 각각의 자동차를 구성하는 부품들은 그 형태만 같을 뿐, 실제로는 각각 존재하게 된다.</li>
</ul>
</blockquote>
<ul>
<li>클래스를 작성하면서 그 안에 생성되는 멤버변수들은 여러 개의 객체간에 서로 동일한 이름으로 존재하지만 실제로는 서로 다른 값이라는 의미
<img src="https://velog.velcdn.com/images/heajin0305_/post/1c0fe503-3d3b-47a8-a916-5a6d3fe5867b/image.PNG" alt=""></li>
</ul>
<h3 id="📌-클래스의-기본-작성-방법">📌 클래스의 기본 작성 방법</h3>
<blockquote>
<ul>
<li>&#39;class&#39;라는 예약어와 클래스의 이름을 명시하고 {...} 블록을 구성한다.</li>
</ul>
</blockquote>
<ul>
<li>멤버변수는 여러 개 존재할 수 있다. 이 때, 값을 선언과 동시에 할당할 수도 있고, 객체를 통해 간접적으로 할당할 수 도 있다.</li>
<li>메서드는 여러 개 존재할 수 있다.</li>
<li>클래스 안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화 하기 위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다.<pre><code class="language-java">class 클래스이름{
    멤버변수;
    void  메서드이름(){
    }
}</code></pre>
</li>
</ul>
<h3 id="📌-객체의-생성-방법">📌 객체의 생성 방법</h3>
<blockquote>
<ul>
<li>객체의 선언</li>
</ul>
</blockquote>
<pre><code class="language-java">클래스이름 객체이름;
ex) Student std;</code></pre>
<ul>
<li>객체의 할당<pre><code class="language-java">객체이름 = new 클래스이름();
ex) std = new Student();</code></pre>
</li>
<li>선언과 할당의 통합<pre><code class="language-java">클래스이름 객체이름 = new 클래스이름();
ex) Student std2 = new Student();</code></pre>
</li>
</ul>
<h3 id="📌-객체의-사용">📌 객체의 사용</h3>
<blockquote>
<ul>
<li>객체 안에 포함된 변수나 메서드는 점(.)으로 연결하여 접근한다.<br>
👉 객체 안에 포함된 변수의 값을 다른 변수에 복사하는 경우</li>
</ul>
</blockquote>
<pre><code class="language-java">변수 = 객체이름.멤버변수;</code></pre>
<p>👉 객체 안에 포함된 변수의 값에 다른 값으로 대입하는 경우</p>
<pre><code class="language-java">객체이름.멤버변수 = 값;</code></pre>
<p>👉 객체 안에 포함된 메서드를 호출하는 경우</p>
<pre><code class="language-java">객체이름.메서드이름();</code></pre>
<p>👉 객체 안에 포함된 메서드에 파라미터를 전달하는 경우</p>
<pre><code class="language-java">객체이름.메서드이름(값1,값2,...,값n);</code></pre>
<h3 id="📌-클래스를-정의하면서-멤버변수에-값을-직접-대입하는-경우">📌 클래스를 정의하면서 멤버변수에 값을 직접 대입하는 경우</h3>
<blockquote>
<ul>
<li>같은 클래스로 객체를 여러개 생성할 경우, 모든 객체가 동일한 값을 갖게된다.</li>
</ul>
</blockquote>
<pre><code>            std        name = &quot;자바학생&quot;
                    age = 19
    Student
            std2    name = &quot;자바학생&quot;
                    age = 19        </code></pre><blockquote>
<ul>
<li>독립성 : 같은 클래스를 통하여 생성된 객체라 할지라도 서로 다른 값을 대입하면 서로 독립적인 형태로 존재하게 된다.</li>
</ul>
</blockquote>
<pre><code>package object;
class Character{
    // 일반적으로 멤버변수는 선언만 한다
    String name;
    int age;
}
public class Main02 {
    public static void main(String[] args) {
        // 하나의 클래스가 정의되면, 그 클래스의 구조를 기반으로 하는
        // 객체(=Object)를 여러개 생성할 수 있다        
        Character d = new Character();
            d.name = &quot;둘리&quot;;
            d.age = 20;        
        Character h = new Character();
            h.name = &quot;희동&quot;;
            h.age = 3;
        System.out.println(&quot;이름 : &quot; + d.name + &quot; , 나이 : &quot; + d.age);
        System.out.println(&quot;이름 : &quot; + h.name + &quot; , 나이 : &quot; + h.age);    
        }
}</code></pre><ul>
<li>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/81b1d4a9-4ecd-46bc-af2d-3784a4f00eaf/image.png" alt=""></li>
</ul>
<h3 id="📌-값이-대입되지-않은-멤버변수를-갖는-클래스">📌 값이 대입되지 않은 멤버변수를 갖는 클래스</h3>
<blockquote>
<ul>
<li>클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 멤버변수에 대입된 값은, 객체를 통하여 멤버변수의 값을 지정하기 전까지 사용될 &quot;기본값&quot;으로서의 의미이다.</li>
</ul>
</blockquote>
<ul>
<li>객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은  의미를 잃어버리게 된다.<ul>
<li>때문에 일반적으로 클래스 작성시에는 멤버변수에 값을 지정하지 않는다.</li>
</ul>
</li>
</ul>
<h3 id="📌-메서드를-포함하는-클래스">📌 메서드를 포함하는 클래스</h3>
<blockquote>
<ul>
<li>메서드란 프로그램에서 하나의 동작 단위를 의미한다.</li>
</ul>
</blockquote>
<ul>
<li>두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우, 이 메서드들을 클래스에 포함시켜 그룹화 할 수 있다.<ul>
<li>클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.</li>
<li>변수의 종류</li>
<li><blockquote>
<p>멤버변수(=전역변수)
: 클래스 안에서 선언된 변수로서, 클래스 블록 범위 안에서 유효하다.</p>
</blockquote>
</li>
<li><blockquote>
<p>지역변수
: 메서드 안에서 선언된 변수로서, 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다. 
이 규칙은 조건, 반복문과 같은 블록 {}를 형성하는 모든 경우에 해당된다.</p>
</blockquote>
<pre><code class="language-java">package object;
class HelloWorld{
// 멤버변수(전역변수)는 모든 메서드가 공유한다
String message;    
void sayHello() {System.out.println(message);}
void setEng() {message = &quot;Hello Java&quot;;}
void setKor() {message = &quot;안녕하세요. 자바&quot;;    }    
}
public class Main03 {
public static void main(String[] args) {
   HelloWorld hello = new HelloWorld()    
   // 메서드 호출 
   hello.sayHello();
   hello.setEng();
   hello.sayHello();
   hello.setKor();
   hello.sayHello();
   hello.setEng();
   hello.setKor();
   hello.setEng();
   hello.setKor();
   hello.sayHello();        
}    
}</code></pre>
</li>
<li>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/43da6a11-a17a-43de-85ef-898c6b96b6d4/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="📌-참고">📌 참고</h3>
<blockquote>
<ul>
<li>지역변수와 전역변수가 선언되는 메모리 영역이 다르다.</li>
</ul>
</blockquote>
<ul>
<li>전역변수(멤버변수)는 Heap 영역에 저장</li>
<li>지역변수는 Stack영역에 저장 -&gt; 자동으로 초기화 되지 않는다.</li>
<li>heap : 프로그래머가 원하는 방식으로 쓸 수 있는 공간, 긴 생명주기를 가진 데이터들이 저장</li>
<li>stack : 아주 잠깐 사용하고 삭제할 데이터의 저장공간</li>
</ul>
<h3 id="📌-메서드만을-포함하는-클래스">📌 메서드만을 포함하는 클래스</h3>
<blockquote>
<ul>
<li>객체 안에 멤버변수(=데이터)가 포함되지 않는다.</li>
</ul>
</blockquote>
<ul>
<li>객체 안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로 굳이 여러 개의 객체를 생성할 필요가 없다.
<tab> 👉 계산기능을 갖는 클래스의 예<pre><code class="language-java">class Calc{
   // plus, parma int x, int y, return
     int plus(int x, int y) {
         return x + y;
     }
 //minus, parma int x, int y, return
     int minus(int x, int y) {
         return x - y;
     }    
 // times, parma int x, int y, return
     int times(int x, int y) {
         return x * y;
     }    
 // divide, parma int x, int y, return
     int divide(int x, int y) {
         int result = 0;
         if(y != 0) { // 0으로 나눌수 없으므로
         result = x / y; 
     }
 }</code></pre>
<tab> 👉 기능의 활용 : 두 개의 값을 위하여 객체를 각각 생성하는 경우<pre><code> Calc c1 = new Calc();
     int a = c1.sum( 100, 200 );
     System.out.println( a );
 Calc c2 = new Calc();
     int b = c2.sum( 200, 300 );
     System.out.println( b );    </code></pre><ul>
<li>파라미터에 의해 결과를 리턴하는 경우, 서로 다른 값을 위하여 객체를 여러개 생성할 필요가 없다.</li>
<li>자체적으로 데이터를 갖는 형태가 아니라 외부적인 요인인 파라미터에 의해서 결과가 생성되므로, 하나의 객체를 재사용하는 것이 바람직하다.
<code>Calc c1 = new Calc();
int a = c1.sum( 100, 200 );
System.out.println( a );
int b = c1.sum( 200, 300 );
System.out.println( b );</code></li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[메서드]]></title>
            <link>https://velog.io/@heajin0305_/%EB%A9%94%EC%84%9C%EB%93%9C</link>
            <guid>https://velog.io/@heajin0305_/%EB%A9%94%EC%84%9C%EB%93%9C</guid>
            <pubDate>Tue, 03 May 2022 17:33:29 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-메서드란-">📌 메서드란 ?</h3>
<blockquote>
<ul>
<li>프로그램의 시작점</li>
</ul>
</blockquote>
<ul>
<li>java 프로그램이 시작되는 시작점을 의미하는 main은 public, static, void, main,
  (String[] args) 라는 키워드로 구성된 하나의 {...} 블록이다.</li>
</ul>
<h3 id="📌-다른이름의-메서드-만들기">📌 다른이름의 메서드 만들기</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/419f4adc-549c-4ac9-923d-a9cc6b92d8ff/image.png" alt=""></p>
</blockquote>
<h3 id="📌-프로그램의-함수--메서드">📌 프로그램의 함수 = 메서드</h3>
<blockquote>
<ul>
<li>특정 기능(=연산)을 그룹화 해서 재사용하기 위한 단위<img src="https://velog.velcdn.com/images/heajin0305_/post/ab4016e2-745d-4816-85c8-78b9377aeddd/image.png" alt=""></li>
</ul>
</blockquote>
<pre><code class="language-java">// 메서드
  public static void f() {
          int x = 100;
          int y = x + 1;
          System.out.println(y);
      }</code></pre>
<h3 id="📌-메서드의-호출">📌 메서드의 호출</h3>
<blockquote>
<ul>
<li>정의된 메서드는 다른 메서드를 구성하는 {...} 안에서 다음의 형식으로 사용 될수 있으며, 이를 메서드를 호출한다고 한다.</li>
</ul>
</blockquote>
<pre><code class="language-java">// 메서드 호출
        // 여러번 사용이 가능하다
        f();
        f();
        f();
        f();</code></pre>
<h3 id="📌-메서드-파라미터">📌 메서드 파라미터</h3>
<blockquote>
<ul>
<li>java 프로그램의 메서드(=함수)는 자신이 실행되는데 필요한 조건값을 메서드 이름 뒤의 괄호안에서 변수 형태로 선언한다. </li>
</ul>
</blockquote>
<ul>
<li>이를 메서드 파라미터라고 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/b5918a27-2c28-46e3-9abf-9ecb304d9a1a/image.png" alt=""><pre><code class="language-java">// 메서드 파라미터 
public static void f1(int a) {
      int b = 10;
      System.out.println(a + b);
  }</code></pre>
</li>
</ul>
<h3 id="📌-다중-파라미터">📌 다중 파라미터</h3>
<blockquote>
<ul>
<li>메서드가 연산을 수행하는데 두 개 이상의 파라미터가 필요하다면 콤마(,)로 구분하여 선언할 수 있다.<img src="https://velog.velcdn.com/images/heajin0305_/post/e557d3d6-c4c3-4e9c-b5f7-43b0c2addba7/image.png" alt=""></li>
</ul>
</blockquote>
<pre><code class="language-java">// 다중 파라미터
public static void plus (int x, int y) {
        System.out.println(x + y);
    }    
    public static void minus (int x, int y) {
        System.out.println(x - y);
    }</code></pre>
<h3 id="📌-파라미터를-갖는-메서드의-호출">📌 파라미터를 갖는 메서드의 호출</h3>
<blockquote>
<ul>
<li>메서드 정의하면서 파라미터가 명시되어 있다면 해당 메서드를 호출하면서 파라미터를 전달해 주어야 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/e3b32202-4953-4f2c-9998-f96e84fd13c9/image.png" alt=""></li>
</ul>
</blockquote>
<h3 id="📌-메서드의-리턴값">📌 메서드의 리턴값</h3>
<blockquote>
<ul>
<li>메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을 &quot;리턴&quot;이라고 하며,
반환되는 값을 &quot;리턴 값&quot;이라고 한다.</li>
</ul>
</blockquote>
<ul>
<li>메서드 안에서 값을 리턴하기 위해서는 &quot;return&quot; 이라는  키워드가 사용된다.</li>
<li>값을 리턴하는 메서드는 선언시에 &quot;void&quot; 키워드 대신, 리턴하는 값에 대한 변수형이 명시된다. void는 리턴값이 없다는 의미이다.<img src="https://velog.velcdn.com/images/heajin0305_/post/0cb5ce64-2b37-4153-bb24-29b79a3f129f/image.png" alt=""><pre><code class="language-java">// 메서드의 리턴값
public static void main(String[] args) {
    // 메서드의 리턴값을 변수에 저장
    int z = f1(5);
    System.out.println(z);
    boolean result = f2(10);
    System.out.println(result);
    // 리턴값을 출력에 사용
    System.out.println(f2(2));
}    
public static int f1(int x) {
    int y = x + 1;
    return y;
}
public static boolean f2(int x) {
    if(x &gt; 5) {
        return true;
    }else {
        return false;
    }
}</code></pre>
</li>
</ul>
<h3 id="📌-메서드간의-상호-호출">📌 메서드간의 상호 호출</h3>
<blockquote>
<ul>
<li>JAVA의 메서드 역시 서로 호출하는 것이 가능하다. </li>
</ul>
</blockquote>
<ul>
<li>호출된 메서드가 값을 리턴하는 경우, 리턴받은 값을 다른 연산에 사용할 수 있다.</li>
</ul>
<h3 id="📌-메서드-간단한-예제-풀이">📌 메서드 간단한 예제 풀이</h3>
<blockquote>
<h4 id="문제-1-hello-world--메서드가-호출되었습니다-를-출력하는-메서드를--각각-만들어-호출하세요">문제 1. &quot;Hello, World~&quot; , &quot;메서드가 호출되었습니다.&quot; 를 출력하는 메서드를  각각 만들어 호출하세요</h4>
</blockquote>
<pre><code class="language-java">public class Main05 {
    public static void main(String[] args) {
        helloWorld();
         showMsg();
         System.out.println(returnM());
    }    
    public static String returnM() { // String 타입
        return &quot;문자열&quot;;
    }
    public static void helloWorld() {
        System.out.println(&quot;Hello, World~&quot;);
    }    
    public static void showMsg() {
        System.out.println(&quot;메서드가 호출되었습니다.&quot;);
    }
}</code></pre>
<ul>
<li>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/3a41baa6-9f8b-4002-b243-ad034a5c93fc/image.png" alt=""><br><h4 id="문제-2-반환값이-없고-받고-인자값매개변수-피라미터이-2개-있는-덧셈-메서드를-구현하여-인자값의-결과값을-출력하여라">문제 2. 반환값이 없고 받고 인자값(매개변수, 피라미터)이 2개 있는 덧셈 메서드를 구현하여 인자값의 결과값을 출력하여라.</h4>
<pre><code class="language-java">public class Main06 {
  public static void main(String[] args) {
      plus(10,20);
  }
  public static void plus(int x, int y) {
      int result = x + y;
      System.out.println(result);
  }    
}</code></pre>
</li>
<li>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/0dfffb1d-9f8d-48c2-ad6a-b86f4e57d0f6/image.png" alt=""><h4 id="문제-3-반환-값이-있고-받는-인자값매개변수-피라미터이-없는-메서드를-구현하세요">문제 3. 반환 값이 있고 받는 인자값(매개변수, 피라미터)이 없는 메서드를 구현하세요.</h4>
<pre><code class="language-java">public class Main07 {
  public static void main(String[] args) {
      System.out.println(returnMethod());
  }
  public static int returnMethod() {
      return 200; // 반환값
  }    
}</code></pre>
</li>
<li>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/c325baae-d78b-4216-a181-a81f50fa69a1/image.png" alt=""><h4 id="문제-4-반환값이-있고-받는-인자값매개변수-피라미터이-있는-메서드를-구현해보세요">문제 4. 반환값이 있고, 받는 인자값(매개변수, 피라미터)이 있는 메서드를 구현해보세요.</h4>
<pre><code class="language-java">public class Main08 {
  public static void main(String[] args) {
      System.out.println(plusM(10, 20));
      System.out.println(plusM(10, 30));
      System.out.println(plusM(10, 40));
      System.out.println(plusM(10, 50));
  }    
  // int a, int b = 인자값
  public static int plusM(int a, int b) {
      return a + b; // 반환값
  }    
}</code></pre>
</li>
<li>출력값<img src="blob:https://velog.io/704192cf-882e-497d-bff6-871897763025" alt="업로드중.."></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[배열을 사용한 문제풀이]]></title>
            <link>https://velog.io/@heajin0305_/%EB%B0%B0%EC%97%B4%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4</link>
            <guid>https://velog.io/@heajin0305_/%EB%B0%B0%EC%97%B4%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4</guid>
            <pubDate>Tue, 03 May 2022 16:10:50 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-문제1-num-배열에-저장된-요소의-합을-구하시오">📌 문제1. num 배열에 저장된 요소의 합을 구하시오.</h3>
<pre><code class="language-java">// 배열 선언
int[] num = new int[] {22,3,8,12};
int sum = 0;
// 배열의 길이만큼 반복문 돌리기
for(int i = 0; i &lt; num.length; i++) {
    sum += num[i];
}
System.out.println(&quot;num의 합 : &quot; + sum);</code></pre>
<h3 id="📌-문제2-num2--배열에-저장된-요소의-합과-평균을-구하시오">📌 문제2. num2  배열에 저장된 요소의 합과 평균을 구하시오.</h3>
<pre><code class="language-java">// 배열 선언
int[] num2 = new int[] {60, 95, 88};
int sum1 = 0;
//int avg = 0; 합계함수로 평균도 구할 수 있으므로 평균 변수는 따로 주지 않았습니다.
for(int i = 0; i &lt; num2.length; i++) {
    sum1 += num2[i];
}
//avg = sum1 / num2.length; 위와 동일한 이유로 주석처리
System.out.println(&quot;문제 2. num2의 합 : &quot; + sum1);
System.out.println(&quot;문제 2. num2의 평균 : &quot; + sum1/num2.length);</code></pre>
<h3 id="📌-문제3-num3-배열에-저장된-요소의-최대값을-출력하시오">📌 문제3. num3 배열에 저장된 요소의 최대값을 출력하시오.</h3>
<pre><code class="language-java">int[] num3 = {94, 85, 95, 88, 90};
int max = num3[0]; 
for(int i = 1; i &lt; num3.length; i++) { 
// int i = 0 라고 했을 때 오류는 없지만 굳이 비교 안해도 되는 값을 비교하기 때문에 int i = 1; 로 한다
    if(num3[i] &gt; max) {
        max = num3[i];
    }
}
System.out.println(&quot;문제 3. 최대값 : &quot; + max);</code></pre>
<h3 id="📌-num4-배열에-저장된-요소의-홀수와-짝수의-합을-각각-구하시오">📌 num4 배열에 저장된 요소의 홀수와 짝수의 합을 각각 구하시오.</h3>
<pre><code class="language-java">int[] num4 = new int[] {22, 3, 8, 12};
int even = 0; // 짝수
int odd = 0; // 홀수
for(int i = 0; i &lt; num4.length; i++) {
    if(num4[i] % 2 == 0) {
        even += num4[i];
    }else {  
        odd += num4[i];
    }
}
System.out.println(&quot;문제 4. 짝수의 합 : &quot; + even);
System.out.println(&quot;문제 4. 홀수의 합 : &quot; + odd);</code></pre>
<h3 id="📌-문제-14-출력">📌 문제 1~4 출력</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/27fb02af-2e99-472d-96f4-ad371dc88f70/image.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[2차 배열]]></title>
            <link>https://velog.io/@heajin0305_/2%EC%B0%A8-%EB%B0%B0%EC%97%B4</link>
            <guid>https://velog.io/@heajin0305_/2%EC%B0%A8-%EB%B0%B0%EC%97%B4</guid>
            <pubDate>Tue, 03 May 2022 15:59:51 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-2차-배열이란-">📌 2차 배열이란 ?</h3>
<blockquote>
<ul>
<li>1차 배열의 각 칸에 새로운 배열을 넣는 형태</li>
</ul>
</blockquote>
<ul>
<li>1차 배열의 각 칸은 행이 되고, 각각의 칸에 추가된 개별적인 배열이 
  &quot;열&quot;의 개념이 되어 &quot;행렬&quot;을 구성하게 된다.</li>
</ul>
<h3 id="📌-2차-배열의-크기-할당">📌 2차 배열의 크기 할당</h3>
<blockquote>
<ul>
<li>행과 열에 대한 크기를 명시한다
  -&gt; 배열이름 = new 데이터형[행][열];</li>
</ul>
</blockquote>
<ul>
<li>2차원 배열의 선언과 할당의 일괄처리
-&gt; 데이터형[][] 배열이름 = new 데이터형[행][열];</li>
</ul>
<h3 id="📌-2차원-배열의-선언-크기-할당-값의-대입에-대한-일괄처리">📌 2차원 배열의 선언, 크기 할당, 값의 대입에 대한 일괄처리</h3>
<blockquote>
<ul>
<li>2차원 배열의 경우 블록 괄호 &quot;{}&quot;를 2중으로 겹쳐서 
2차원 배열을 표현한다.</li>
</ul>
</blockquote>
<ul>
<li>행과 열의 구분에는 콤마(,)가 사용된다.</li>
<li>컴파일러가 블록괄호 &quot;{}&quot;의 요소를 파악하면 행, 열의 크기가 산출될 수 있으므로 배열의 크기 설정을 위한 [][]에는 배열의 크기를 명시하지 않는다.<img src="https://velog.velcdn.com/images/heajin0305_/post/c0481157-46b7-4db9-bb8a-1ec0df3f6b5e/image.png" alt=""></li>
</ul>
<h3 id="📌-2차원-배열에-대한-값의-대입-방법">📌 2차원 배열에 대한 값의 대입 방법</h3>
<blockquote>
<ul>
<li>행, 열에 대한 인덱스를 통하여 값을 대입한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/21a1e41d-b94a-4c71-be57-fa52bfacab53/image.png" alt=""><br></li>
<li>일괄지정 하는 경우<img src="https://velog.velcdn.com/images/heajin0305_/post/cd684e25-220f-463d-ab3c-8e98a6103ced/image.png" alt=""></li>
</ul>
</blockquote>
<h3 id="📌-2차원-배열의-길이">📌 2차원 배열의 길이</h3>
<blockquote>
<ul>
<li>2차원 배열의 길이는 행에 대한 측면과 열에 대한 측면을 나누어서 생각해야 한다.</li>
</ul>
</blockquote>
<ul>
<li>행의 길이
 -&gt; 1차 배열의 길이는 2차 배열에서는 행의 크기로 조회가 된다.
 ex ) int rows = grade.length;</li>
<li>열의 길이
 -&gt; 열의 길이는 각 행에 대하여 개별적으로 조회해야 한다.
 ex ) int cols = grade[행].length;</li>
</ul>
<h3 id="📌-2차-배열의-예시-문제">📌 2차 배열의 예시 문제</h3>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/5b70338c-7b87-4568-bb6f-114c6b8a64d2/image.PNG" alt=""></p>
<pre><code class="language-java">package array;

public class Main01 {

    public static void main(String[] args) {
        // 성적표에 대한 2차 배열 생성
        // 학급 성적을 위한 배열
        int[][] grade = new int[3][3];

        // 둘리의 과목별 점수
        grade[0][0] = 75;
        grade[0][1] = 82;
        grade[0][2] = 91;

        // 도우너의 과목별 점수
        grade[1][0] = 88;
        grade[1][1] = 64;
        grade[1][2] = 50;

        // 또치의 과목별 점수
        grade[2][0] = 100;
        grade[2][1] = 100;
        grade[2][2] = 90;

        // 2차 배열을 탐색하여 총점과 평균점수 구하기
        for(int i = 0; i &lt; grade.length; i++) { // 행
            // 반복문 안에서 선언된 변수는 매 실행시마다 새로 생성된다
            int sum = 0;
            int avg = 0;

            for(int j = 0; j &lt; grade[i].length; j++) { // 열
                // i번째 행의 j번째 열의 데이터를 누적처리
                sum += grade[i][j];
            }

            // i번째 위치의 평균점수 구하기 = 총점 / 과목수
            // i번째 학생의 과목수는 grade 배열의 i번째에 대한 길이
            avg = sum / grade[i].length;

            System.out.println(&quot;총점 = &quot; + sum + &quot;, 평균 = &quot; + avg);
        }

    }

}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[1차 배열]]></title>
            <link>https://velog.io/@heajin0305_/%EB%B0%B0%EC%97%B4</link>
            <guid>https://velog.io/@heajin0305_/%EB%B0%B0%EC%97%B4</guid>
            <pubDate>Tue, 03 May 2022 15:41:50 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-배열이란-">📌 배열이란 ?</h3>
<blockquote>
<ul>
<li>변수를 그룹으로 묶은 형태의 한 종류로서, 사물함 같은 형태를 갖고 있다.</li>
</ul>
</blockquote>
<ul>
<li>하나의 배열안에는 같은 종류(데이터 형)의 값들만 저장될 수 있다.</li>
</ul>
<h3 id="📌-배열을-만드는-방법">📌 배열을 만드는 방법</h3>
<blockquote>
<ul>
<li>배열의 선언<img src="https://velog.velcdn.com/images/heajin0305_/post/f85125b2-8112-4f05-8e97-2b3d232cecaf/image.png" alt=""><br></li>
</ul>
</blockquote>
<ul>
<li>배열의 생성 : 변수를 저장할 수 있는 사물함을 생성한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/6db9fb1b-afb4-49bf-942b-cabb5802f70f/image.png" alt=""><br></li>
<li>배열 생성의 예 : 3개의 int형 변수를 저장할 수 있는 배열 생성<img src="https://velog.velcdn.com/images/heajin0305_/post/ca78a8a5-4a06-4f6d-aab9-547cd54ec1f2/image.png" alt=""><br><ul>
<li>배열의 모양<img src="https://velog.velcdn.com/images/heajin0305_/post/b86fc6c8-a14b-49df-a763-c9a9443ade0e/image.png" alt=""><br></li>
</ul>
</li>
<li>배열의 선언과 크기 지정에 대한 일괄처리<img src="https://velog.velcdn.com/images/heajin0305_/post/42df160d-f789-495f-8b5a-d1ca5e7d4809/image.png" alt=""></li>
</ul>
<h3 id="📌-배열에-값을-저장하기">📌 배열에 값을 저장하기</h3>
<blockquote>
<ul>
<li>배열은 값을 저장할 수 있는 공간일 뿐, 그 자체가 값은 아니다.</li>
</ul>
</blockquote>
<ul>
<li>값이 대입되지 않은 경우, 숫자형은 0, boolean형은 false가 자동으로 대입된다.</li>
<li>배열안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접
값을 대입해야 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/868d6305-d4f3-47ad-9fc2-1a36b293505e/image.png" alt=""></li>
</ul>
<h3 id="📌-둘리의-점수를-배열로-표현하기">📌 둘리의 점수를 배열로 표현하기</h3>
<blockquote>
<ul>
<li>둘리의 점수 표<img src="https://velog.velcdn.com/images/heajin0305_/post/36f2826e-87c0-46cd-a208-53dad0f8a11a/image.PNG" alt=""><br></li>
</ul>
</blockquote>
<ul>
<li>점수 표를 배열로 표현<img src="https://velog.velcdn.com/images/heajin0305_/post/648342aa-7ad6-4f07-a4ce-60d8088f7abc/image.png" alt=""></li>
</ul>
<h3 id="📌-배열의-크기-설정과-값-할당에-대한-일괄처리">📌 배열의 크기 설정과 값 할당에 대한 일괄처리</h3>
<blockquote>
<ul>
<li>배열의 크기를 지정하면서 괄호 &quot;{...}&quot;안에 배열에 포함될 각 항목들을 콤마(,)로 
  나열하면, 배열의 성성과 값의 할당을 일괄처리할 수 있다. </li>
</ul>
</blockquote>
<ul>
<li>이 때는 배열의 크기를 별도로  지정하지 않으며, &quot;new 데이형[]&quot; 부분은 생략 가능하다.<img src="https://velog.velcdn.com/images/heajin0305_/post/151d68cd-4eac-44f1-9f79-da7204f6ed3f/image.png" alt=""></li>
</ul>
<h3 id="📌-배열값-사용하기">📌 배열값 사용하기</h3>
<blockquote>
<ul>
<li>배열안에 저장되어 있는 값들을 사용하여 연산이나 출력등의 처리를 위해서는
배열에 부여된 인덱스 값을 통해서 데이터에 접근해야 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/dd3df364-d462-4ada-9721-7a75bc57abc3/image.png" alt=""></li>
</ul>
</blockquote>
<h3 id="📌-배열과-반복문">📌 배열과 반복문</h3>
<blockquote>
<ul>
<li>배열의 특성
 -&gt; 0 ~ (배열의 크기 -1)만큼의 인덱스 값을 순차적으로 갖는다.</li>
</ul>
</blockquote>
<ul>
<li>특성을 활용한 배열 데이터의 처리
-&gt; 일정 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하는
 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 
가능하다.<img src="https://velog.velcdn.com/images/heajin0305_/post/c71aed98-1db7-4ebf-a0c4-0df9156db7ba/image.png" alt=""></li>
</ul>
<h3 id="📌-배열의-크기길이">📌 배열의 크기(길이)</h3>
<blockquote>
<ul>
<li>배열의 길이를 얻기 위해서는 &quot;배열이름.length&quot; 형식으로 접근한다.
  ex) grade라는 배열을 생성한 경우 배열의 길이는<img src="https://velog.velcdn.com/images/heajin0305_/post/f33ccba9-8737-40ff-aad2-04cbd38cb5fc/image.png" alt=""></li>
</ul>
</blockquote>
<h3 id="📌-배열의-예시-문제">📌 배열의 예시 문제</h3>
<pre><code class="language-java">package array;

public class Main01 {

    public static void main(String[] args) {
        // 배열의 생성
        // 배열의 선언과 크기 지정 및 값의 할당에 대한 개별 처리
        int[] dooly; 
        dooly = new int[5];
        dooly[0] = 75;
        dooly[1] = 82;
        dooly[2] = 91;
        dooly[3] = 100;
        dooly[4] = 95;

        // 배열의 선언과 크기 지정의 일괄처리
        int[] douneo = new int[3];
        douneo[0] = 88;
        douneo[1] = 64;
        douneo[2] = 50;

        // ddochy
        // 배열 생성의 일괄처리
        int [] ddochy = new int[] {100, 100, 90};

        // 배열 활용
        // 합을 할당한 변수 선언
        // 같은 종류의 변수들은 콤마로 구별하여 한번에 선언 가능함
        int sum1 = 0, sum2 = 0, sum3 = 0;

        // 각 배열 요소의 값에 대한 합계 구하기
        for(int i = 0; i &lt; dooly.length; i++) {
            sum1 += dooly[i];
        }

        System.out.println(&quot;dooly sum1 : &quot; + sum1);

        // sum2, douneo 합계 반복문 생성 및 출력
        for(int i = 0; i &lt; douneo.length; i++) {
            sum2 += douneo[i];
        }
        System.out.println(&quot;douneo sum2 : &quot; + sum2);

        // sum3. ddochy 합계 반복문 생성 및 출력
        for(int i = 0; i &lt; ddochy.length; i++) {
            sum3 += ddochy[i];
        }
        System.out.println(&quot;ddochy sum3 : &quot; + sum3);

        // 평균
         System.out.println(&quot;dooly 평균 : &quot; + sum1 / dooly.length);
         System.out.println(&quot;douneo 평균 : &quot; + sum2 / douneo.length);
         System.out.println(&quot;ddochy 평균 : &quot; + sum3 / ddochy.length);

         float avg1 = (sum1 / dooly.length);
         System.out.println(&quot;avg1 : &quot; + avg1);

    }

}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[반복문(for문, while문, do~while문)]]></title>
            <link>https://velog.io/@heajin0305_/%EB%B0%98%EB%B3%B5%EB%AC%B8for%EB%AC%B8-while%EB%AC%B8-dowhile%EB%AC%B8</link>
            <guid>https://velog.io/@heajin0305_/%EB%B0%98%EB%B3%B5%EB%AC%B8for%EB%AC%B8-while%EB%AC%B8-dowhile%EB%AC%B8</guid>
            <pubDate>Tue, 03 May 2022 09:07:36 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-java의-반복문이란-">📌 JAVA의 반복문이란 ?</h3>
<blockquote>
<ul>
<li>반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문입니다.</li>
</ul>
</blockquote>
<ul>
<li>프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나입니다.</li>
</ul>
<h3 id="📌-반복문의-종류">📌 반복문의 종류</h3>
<blockquote>
<ul>
<li>for문</li>
</ul>
</blockquote>
<ul>
<li>while문</li>
<li>do ~ while문</li>
</ul>
<h3 id="📌-for문">📌 for문</h3>
<blockquote>
<ul>
<li>for문은 사람이 직접 처리하기에 부담수러운 반복적인 작업을 처리하기에 매우 용이하다.
<img src="https://velog.velcdn.com/images/heajin0305_/post/d3d3431f-ef1d-4edd-8972-83d45bf81a01/image.PNG" alt=""><img src="https://velog.velcdn.com/images/heajin0305_/post/68131726-c54d-422a-b22a-7605d73971fd/image.PNG" alt=""><br>
</li>
</ul>
</blockquote>
<ul>
<li>for문 예제  <pre><code class="language-java">// 반복문
      // 1 ~ 5 까지 합
      // 1 + 2 + 3 + 4 + 5 = 15
      // for문
      int sum = 0;        
      // i 값이 1부터 5까지 증가하는 동안, 
      // i 의 값을 sum에 누적한다.
      for(int i = 1; i &lt;= 10; i++ ) {
          // 결과값 누적
          System.out.println(&quot;i : &quot; + i);
          sum += i;
          System.out.println(&quot;sum : &quot; + sum);
      }        
      System.out.println(sum);</code></pre>
<pre><code class="language-java">  // 구구단 7단의 결과 값
      int j = 0;        
      for( int i = 1; i &lt; 10; i++ ) {
          j = 7 * i;
          System.out.println(j);
      }</code></pre>
<h3 id="📌-while문">📌 while문</h3>
<blockquote>
<ul>
<li>while문 역시 for문과 마찬가지로 반복적인 처리를 수행하는 문법이다</li>
</ul>
</blockquote>
<ul>
<li>for문은 초기식, 조건식, 증감식을 모두 내장하는 반면, while문은 조건식만을 내장하기 때문에  초기식과 증감식을 외부에 따로 정의해 주어야 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/77edd68f-d7f4-489e-9a5b-3b71858a6a46/image.PNG" alt=""> <br></li>
<li>while문 예제<pre><code class="language-java">// while문으로 구구단 7단 출력
    int j = 0;    
    // 초기값
    int i = 1;        
    while(i &lt; 10) {
        j = 7 * i;
        System.out.println(j);
        i++;
    }</code></pre>
<pre><code class="language-java">// 1 ~ 10까지 누적된 합
    int sum = 0;
    int i = 1;    
    while( i &lt;= 100 ) {
        sum += i;
        i++;
    }        
    System.out.println(sum);</code></pre>
</li>
</ul>
</li>
</ul>
<h3 id="📌-do--while문">📌 do ~ while문</h3>
<blockquote>
<ul>
<li>조건의 판별을 나중에 수행하는 반복문 형태</li>
</ul>
</blockquote>
<ul>
<li>초기식을 설정한 후 do{...} 안의 문장을 우선적으로 1회 실행하고 조건을 판별하므로       조건이 참이 아니더라도 최소 1회는 실행된다.<img src="https://velog.velcdn.com/images/heajin0305_/post/de13a0dc-3b73-43dc-940c-628eaa4bf02a/image.PNG" alt=""><br><blockquote>
<ul>
<li>do ~ while문 예제 </li>
</ul>
</blockquote>
<pre><code class="language-java">// do ~ while문, 1 ~ 100 누적된 합
     int sum = 0;
     // 초기식
     int i = 1;        
     do {
         sum += i;
         i++;
     } while(i &lt;= 100);        
     System.out.println(sum);</code></pre>
<pre><code class="language-java">// 구구단 7단, do~while문으로 출력        
     // 초기값
     int i = 1;
     int j = 0;        
     do {
         j = 7*i;
         System.out.println(j);
         i++;
     }while(i &lt;= 9);</code></pre>
</li>
</ul>
<h3 id="📌-반복문에서의-흐름제어">📌 반복문에서의 흐름제어</h3>
<blockquote>
<ul>
<li>break : 반복문 안에서 break 키워드를 만나면 반복을 강제로 종료한다.</li>
</ul>
</blockquote>
<ul>
<li>continue : 실행흐름이 증감식으로 강제 이동된다.<img src="https://velog.velcdn.com/images/heajin0305_/post/96c7c3b7-3179-4957-991a-f3c614b62eb7/image.PNG" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[조건문(if문, if ~ else문 , if ~ else if ~ else문, switch문)]]></title>
            <link>https://velog.io/@heajin0305_/%EC%A1%B0%EA%B1%B4%EB%AC%B8if%EB%AC%B8-if-else%EB%AC%B8-if-else-if-else%EB%AC%B8-switch%EB%AC%B8</link>
            <guid>https://velog.io/@heajin0305_/%EC%A1%B0%EA%B1%B4%EB%AC%B8if%EB%AC%B8-if-else%EB%AC%B8-if-else-if-else%EB%AC%B8-switch%EB%AC%B8</guid>
            <pubDate>Mon, 02 May 2022 11:57:21 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-java의-조건문이란-">📌 JAVA의 조건문이란 ?</h3>
<blockquote>
<p>무조건 실행되는 것이 아니라, 특정 조건을 충족할 경우에만 실행되는 구문</p>
</blockquote>
<h3 id="📌-조건문의-종류">📌 조건문의 종류</h3>
<blockquote>
<ul>
<li>if문 
  : 주어진 &#39;조건&#39;이 참(true)일 경우에만 실행된다.</li>
</ul>
</blockquote>
<ul>
<li>if ~ else 문
 : 주어진 조건이 참(true)일 경우 if문이 실행되고,
 그렇지 않을 경우 else 문이 실행 된다.</li>
<li>if ~ else if ~ else 문
 : 조건을 여러개로 세분화하여 사용하는 if문이다.</li>
<li>switch문
 : 하나의 &#39;값&#39;에 대하여 여러가지 경우의 수로 나누어 분기한다.</li>
</ul>
<h3 id="📌-if문">📌 if문</h3>
<blockquote>
<ul>
<li>if문은 주어진 조건이 참 일 경우에 지정된 구문이 실행된다<img src="https://velog.velcdn.com/images/heajin0305_/post/d09a98e6-1029-46bc-ac04-9421ec7f2842/image.png" alt=""><br></li>
</ul>
</blockquote>
<ul>
<li>if문 예제 <pre><code class="language-java"> int myage = 20;        
     if( myage == 19 ){
         System.out.println(&quot;19살 입니다.&quot;);
     }        
     if( myage != 20 ) {
         System.out.println(&quot;20살이 아닙니다.&quot;);
     }    
     if( myage &gt; 19 ) {
         System.out.println(&quot;성인입니다.&quot;);
     }        
     if( myage &lt;= 19 ) {
         System.out.println(&quot;학생입니다.&quot;);
     }</code></pre>
<pre><code class="language-java">int point = 85;        
     /*
      * point 가 70보다 크고, 80이하이면 &quot;C학점 입니다.&quot;를 출력,
      * point 가 70이하 또는 80보다 크면 &quot;범위를 벗어났습니다.&quot;
      */        
     // AND(&amp;&amp;) -&gt; 두 조건이 모두 참이어야 전체가 참
     if( point &gt; 70 &amp;&amp; point &lt;= 80 ) {
         System.out.println(&quot;C학점 입니다.&quot;);
     }
     // OR(||) -&gt; 두 조건중 하나라도 참이면 전체가 참
     if( point &lt;= 70 || point &gt; 80 ) {
         System.out.println(&quot;범위를 벗어났습니다.&quot;);
     }</code></pre>
</li>
</ul>
<h3 id="📌-if--else문">📌 if ~ else문</h3>
<blockquote>
<ul>
<li>그렇지 않으면?</li>
</ul>
</blockquote>
<ul>
<li>if문이 조건이 참일 경우에 실행되는 구문이라면, if문이 조건과 반대되는 경우에 실행되고
 구문이 else 문이다.</li>
<li>else 문은 독립적으로 실행될 수 없고, 반드시 if문의 뒤에 위치해야 한다.<img src="https://velog.velcdn.com/images/heajin0305_/post/2a34865e-d906-4967-a34b-75271c5fccb7/image.png" alt=""><br></li>
<li>if ~ else문 예제 <pre><code class="language-java">boolean is_korean = true;    
     if( is_korean ) {
         System.out.println(&quot;한국사람 입니다.&quot;);
     } else {
         System.out.println(&quot;한국 사람이 아닙니다.&quot;);
     }</code></pre>
<pre><code class="language-java">/*
* 문제2. 만약 돈이 3000원 이상 있거나, 카드가 있다면 택시를 타고 그렇지 않으면 걸어가라.
*/
     int money2 = 2000;
     boolean hasCard = true;    
     if( money2 &gt;= 3000 || hasCard ) {
         System.out.println(&quot;택시를 타고가라&quot;);
     } else {
         System.out.println(&quot;걸어가라&quot;);
     }</code></pre>
</li>
</ul>
<h3 id="📌-if--else-if--else문">📌 if ~ else if ~ else문</h3>
<blockquote>
<ul>
<li>여러 가지 경우의 수를 분기</li>
</ul>
</blockquote>
<ul>
<li>if 문과 else 문 사이에 else if 문으로 두 번째 조건, 세번째 조건을 나열할 수 있다.<ul>
<li>else if 문은 필요한 만큼 나열할 수 있으며, 필요치 않은 경우 else 문은 생략 가능하다.<img src="https://velog.velcdn.com/images/heajin0305_/post/c7b8482b-6486-466a-a6c0-508c325a47e7/image.png" alt=""><br></li>
<li>if ~ else if ~ else문 예제<pre><code class="language-java">int point = 90;
    if( 90 &lt; point &amp;&amp; point &lt;= 100 ) {
        System.out.println(&quot;A&quot;);
    } else if( 80 &lt; point &amp;&amp; point &lt;= 90 ) {
        System.out.println(&quot;B&quot;);
    } else if( 70 &lt; point &amp;&amp; point &lt;= 80 ) {
        System.out.println(&quot;C&quot;);
    } else {
        System.out.println(&quot;F&quot;);
    }</code></pre>
</li>
</ul>
</li>
</ul>
<h3 id="📌-모든-종류의-if문을-사용하는-문제">📌 모든 종류의 if문을 사용하는 문제</h3>
<blockquote>
<ul>
<li>문제5-1. 국어, 영어, 수학 점수의 평균이 95점 이상이면 장학색을 출력하여라.</li>
</ul>
</blockquote>
<ul>
<li>문제5-2. 국어점수가 70점 이상이면 &quot;국어 합격&quot; 그렇지 않으면 &quot;국어 불합격&quot;을 출력하여라<ul>
<li>문제5-3. 수학점수가 90점 이상이면 &quot;A학점&quot;, 80점 이상이면 &quot;B학점&quot;, 70점 이상이면 &quot;C학점&quot;,</li>
<li>60점 이상이면 &quot;D학점&quot;, 나머지 &quot;F학점&quot;을 출력<pre><code class="language-java">// 문제 풀이
int kor = 100, eng = 100, mat = 89;
  double avg = (kor + eng + mat)/3;        
  // 5-1. 풀이
  if( avg &gt;= 95 ) {
      System.out.println(&quot;장학생&quot;);
  }        
  // 5-2. 풀이
  if( kor &gt;= 70 ) {
      System.out.println(&quot;국어 합격&quot;);
  } else {
      System.out.println(&quot;국어 불합격&quot;);
  }        
  // 5-3. 풀이
  if( mat &gt;= 90 ) {
      System.out.println(&quot;수학 : A학점&quot;);
  } else if( mat &gt;= 80 ) {
      System.out.println(&quot;수학 : B학점&quot;);
  } else {
      System.out.println(&quot;수학 : F학점&quot;);
  }</code></pre>
</li>
</ul>
</li>
</ul>
<h3 id="📌-switch문">📌 switch문</h3>
<blockquote>
<ul>
<li>변수 값에 대한 경우의 수를 처리하는 switch문</li>
</ul>
</blockquote>
<ul>
<li>switch문은 하나의 변수(기준값)에 대한 여러가지 case를 정의하는 구문이다.</li>
<li>if문은 조건식(비교식, 부등식)이 사용될 수 있지만, switch문은 분기 조건이 반드시 일치하는 
&quot;값&quot;에 대해서만 처리 가능하다.<img src="https://velog.velcdn.com/images/heajin0305_/post/7da56793-5e27-49c3-8ad1-715607fc2302/image.png" alt=""><br><ul>
<li>switch문 예제 <pre><code class="language-java">char grade = &#39;F&#39;;        
  switch (grade) {
  case &#39;A&#39;:
      System.out.println(&quot;91 ~ 100점 사이 입니다.&quot;);
      break;
  case &#39;B&#39;:
      System.out.println(&quot;81 ~ 90점 사이 입니다.&quot;);
      break;
  case &#39;C&#39;:
      System.out.println(&quot;71 ~ 80점 사이 입니다.&quot;);
      break;
  default :
      System.out.println(&quot;70점 이하입니다.&quot;);
      break;
  }</code></pre>
<pre><code class="language-java">// char grade 선언, A,B,C가 있다.
// A or B or C : &quot;Pass&quot; 1번 출력
// A, B, C를 제외한 다른 등급이 올 경우, &quot;Not-Pass&quot; 1번 출력 
  char grade = &#39;D&#39;;        
  switch (grade) {
  case &#39;A&#39;:
  case &#39;B&#39;:
  case &#39;C&#39;:
      System.out.println(&quot;Pass&quot;);
      break;
  default:
      System.out.println(&quot;Not-Pass&quot;);
      break;
  }</code></pre>
</li>
</ul>
</li>
</ul>
<h3 id="📌-switch문을-사용한-문제">📌 switch문을 사용한 문제</h3>
<blockquote>
<ul>
<li>숫자가 3이면 &quot;안녕&quot;이 세줄, 숫자가 2이면 &quot;안녕&quot;이 두줄, 숫자가 1이면 &quot;안녕&quot;이 한줄,그 외는 &quot;잘가&quot;를 출력</li>
</ul>
</blockquote>
<pre><code class="language-java">int num2 = 5;        
        switch (num2) {
        case 3:
            System.out.println(&quot;안녕&quot;);
        case 2:
            System.out.println(&quot;안녕&quot;);
        case 1:
            System.out.println(&quot;안녕&quot;);
            break;
        default:
            System.out.println(&quot;잘가&quot;);
            break;
        }</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[카카오 비밀지도]]></title>
            <link>https://velog.io/@heajin0305_/%EC%B9%B4%EC%B9%B4%EC%98%A4-%EB%B9%84%EB%B0%80%EC%A7%80%EB%8F%84</link>
            <guid>https://velog.io/@heajin0305_/%EC%B9%B4%EC%B9%B4%EC%98%A4-%EB%B9%84%EB%B0%80%EC%A7%80%EB%8F%84</guid>
            <pubDate>Mon, 25 Apr 2022 16:25:58 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다.
다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.</p>
</blockquote>
<blockquote>
<ol>
<li>지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 “공백”(“ “) 또는 “벽”(“#”) 두 종류로 이루어져 있다.</li>
<li>전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다.        지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.</li>
<li>“지도 1”과 “지도 2”는 각각 정수 배열로 암호화되어 있다.</li>
<li>암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다
네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.</li>
</ol>
</blockquote>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/60bdf045-7b54-45ce-b4b6-5b1c6e20baae/image.png" alt=""></p>
<blockquote>
<ul>
<li>입력 형식
입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.
1 ≦ n ≦ 16
arr1, arr2는 길이 n인 정수 배열로 주어진다.
  정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2^n - 1을 만족한다.</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>출력 형식
원래의 비밀지도를 해독하여 &quot;#&quot;, 공백으로 구성된 문자열 배열로 출력하라.</li>
</ul>
</blockquote>
<h3 id="코드">코드</h3>
<pre><code class="language-java">package test;

public class SecretMap {

    public static void main(String[] args) {
        int n = 5; // 지도의 한 변 크기
        int[] arr1 = {9, 20, 28, 18, 11};
        int[] arr2 = {30, 1, 21, 17, 28};

        int[] map = new int[n]; // 두개의 맵을 합치는 변수

        for(int i = 0; i &lt; n; i++) {
            map[i] = arr1[i] | arr2[i]; // or연산자를 이용해서 두개의 맵이 합쳐진 map 구하기
        }

        for(int i = 0; i &lt; map.length; i++) {
            String a = Integer.toBinaryString(map[i]);
            if(a.length() &lt; n) { // a의 길이가 n의 크기보다 작을때
                int b = n - a.length(); // b = n에서 a의 길이값을 빼준다
                for(int j = 0; j &lt; b; j++) { // b 값보다 작을때 까지
                    a = &quot;0&quot; + a; // 빈 공간에 0을 넣어준다
                }
            }
            a = a.replaceAll(&quot;0&quot;, &quot; &quot;); // replaceAll =&gt; 특정 문자열을 원하는 문자열로 변경해주는 함수
            a = a.replaceAll(&quot;1&quot;, &quot;#&quot;);
            System.out.println(a);
        }    
    }    
}</code></pre>
<blockquote>
<p>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/b9a1970b-02ff-470d-8a44-f866accbd653/image.png" alt=""></p>
</blockquote>
<p>&lt;출처 : <a href="https://programmers.co.kr/learn/courses/30/lessons/17681">https://programmers.co.kr/learn/courses/30/lessons/17681</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[타노스]]></title>
            <link>https://velog.io/@heajin0305_/%ED%83%80%EB%85%B8%EC%8A%A4</link>
            <guid>https://velog.io/@heajin0305_/%ED%83%80%EB%85%B8%EC%8A%A4</guid>
            <pubDate>Thu, 21 Apr 2022 11:28:04 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>타노스는 프로그램의 균형을 위해서는 리스트의 원소 절반을 무작위로 삭제해야 한다고 믿고 있다.
    타노스가 손가락을 튕겼을 때(프로그램을 실행했을 때) 입력된 리스트에서 
    절반의 원소를 무작위로 삭제하여 리턴하는 인피니티 건틀렛 프로그램을 작성하시오.
    (무작위 삭제이므로 입력값이 같아도 출력값이 매번 달라야 합니다)</p>
</blockquote>
<blockquote>
<p>입력 예시
    [2, 3, 1, 6, 5, 7]
출력 예시 1
    [2, 5, 7]
    출력 예시 2
    [3, 6, 5]</p>
</blockquote>
<blockquote>
<p>참고: 리스트의 원소가 홀수개일 경우 절반의 확률로 절반보다 많은 원소가 삭제되거나  절반보다 적은 원소가 삭제되어야 합니다.
             (만약 리스트의 원소가 7개라면 절반의 확률로 3개 또는 4개의 원소가 삭제됨)</p>
</blockquote>
<h3 id="코드">코드</h3>
<pre><code class="language-java">package project4;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;


public class Thanos {
      public static void main(String[] args) {
            int[] human = {2,3,1,6,5,7};

            ArrayList&lt;Integer&gt; start = new ArrayList&lt;Integer&gt;();

                  for(int i = 0; i &lt; human.length; i++) {
                start.add(human[i]);
            }

            ArrayList&lt;Integer&gt; finish = infinity(start);

            for(int a = 0; a &lt; finish.size(); a++) {
                System.out.print(finish.get(a)+&quot; &quot;);
            }
        }

        public static ArrayList&lt;Integer&gt; infinity(ArrayList&lt;Integer&gt; input) {
            Random random = new Random();
            int size = input.size();
            for(int i = 0; i &lt; size / 2; i++) {
                input.remove(random.nextInt(input.size()));
            }
            return input;
        }

}    </code></pre>
<blockquote>
<p>출력값
<img src="https://velog.velcdn.com/images/heajin0305_/post/594bda9e-9b78-4b88-93ee-abdae5531d43/image.png" alt=""></p>
</blockquote>
<p>&lt;출처 : <a href="https://codingdojang.com/scode/592?langby=java">https://codingdojang.com/scode/592?langby=java</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] - 카카오페스티벌]]></title>
            <link>https://velog.io/@heajin0305_/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C</link>
            <guid>https://velog.io/@heajin0305_/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C</guid>
            <pubDate>Thu, 21 Apr 2022 06:13:13 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>&lt;문제&gt;</p>
</blockquote>
<ul>
<li><p>2017년에 이어, 2018년에도 카카오 코드 페스티벌이 개최된다!</p>
</li>
<li><p>카카오 코드 페스티벌에서 빠질 수 없는 것은 바로 상금이다. </p>
</li>
<li><p>2017년에 개최된 제1회 코드 페스티벌에서는, 본선 진출자 100명 중 21명에게 아래와 같은 기준으로 상금을 부여하였다.</p>
</li>
<li><p>2018년에 개최될 제2회 코드 페스티벌에서는 상금의 규모가 확대되어, 본선 진출자 64명 중 31명에게 아래와 같은 기준으로 상금을 부여할 예정이다.</p>
</li>
<li><p>제이지는 자신이 코드 페스티벌에 출전하여 받을 수 있을 상금이 얼마인지 궁금해졌다. </p>
</li>
<li><p>그는 자신이 두 번의 코드 페스티벌 본선 대회에서 얻을 수 있을 총 상금이 얼마인지 알아보기 위해, 상상력을 발휘하여 아래와 같은 가정을 하였다.</p>
</li>
<li><p>제1회 코드 페스티벌 본선에 진출하여 a등(1 ≤ a ≤ 100)등을 하였다. 단, 진출하지 못했다면 a = 0으로 둔다.</p>
</li>
<li><p>제2회 코드 페스티벌 본선에 진출하여 b등(1 ≤ b ≤ 64)등을 할 것이다. 단, 진출하지 못했다면 b = 0으로 둔다.</p>
</li>
<li><p>제이지는 이러한 가정에 따라, 자신이 받을 수 있는 총 상금이 얼마인지를 알고 싶어한다.</p>
</li>
<li><p>첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다.</p>
</li>
<li><p>입력</p>
</li>
<li><p>다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. </p>
</li>
<li><p>각 줄에는 두 개의 음이 아닌 정수 a(0 ≤ a ≤ 100)와 b(0 ≤ b ≤ 64)가 공백 하나를 사이로 두고 주어진다.</p>
</li>
<li><p>출력</p>
</li>
<li><p>각 가정이 성립할 때 제이지가 받을 상금을 원 단위의 정수로 한 줄에 하나씩 출력한다.</p>
<blockquote>
<p>상금표
<img src="https://velog.velcdn.com/images/heajin0305_/post/7c911c32-9486-4d69-bf0f-b235b397ad61/image.PNG" alt=""></p>
</blockquote>
</li>
</ul>
<h3 id="코드">코드</h3>
<pre><code class="language-java">package project2;

import java.util.Scanner;

public class Price_jys {
    public static void main(String[] args) {
        int count;
        Scanner scanner = new Scanner(System.in);

        count = scanner.nextInt();

        int[] sum = new int[count];

        if(count &gt;= 0 &amp;&amp; count &lt;= 1000) {
            for(int i = 0; i &lt; count; i++) {
                int first;
                int second;
                int sum2 = 0;

                // 첫번째 대회
                first = scanner.nextInt();
                // 두번째 대회 
                second = scanner.nextInt();

                if(first &gt;= 0 &amp;&amp; first &lt;= 100) {
                    if(first == 0) {

                    }else if(first == 1) {
                        sum2 += 5000000;
                    }else if(first &lt;= 3) {
                        sum2 += 3000000;
                    }else if(first &lt;= 6) {
                        sum2 += 2000000;
                    }else if(first &lt;= 10) {
                        sum2 += 500000;
                    }else if(first &lt;= 15) {
                        sum2 += 300000;
                    }else if(first &lt;= 21) {
                        sum2 += 100000;
                    }else if(first &gt;= 22){
                    }
                }

                if(second &gt;= 0 &amp;&amp; second &lt;= 64) {
                    if(second == 0) {

                    }else if(second == 1) {
                        sum2 += 5120000;
                    }else if(second &lt;= 3) {
                        sum2 += 2560000;
                    }else if(second &lt;= 7) {
                        sum2 += 1280000;
                    }else if(second &lt;= 15) {
                        sum2 += 640000;
                    }else if(second &lt;= 31) {
                        sum2 += 320000;
                    }else if(second &gt;= 32){
                    }
                    sum[i] = sum2;
                }

            }
            for(int i = 0; i &lt; sum.length; i++) {
                System.out.println(sum[i]);
            }
        }
    }
}</code></pre>
<blockquote>
<p>입력값<img src="https://velog.velcdn.com/images/heajin0305_/post/adc0bd21-f18f-485f-aa6d-72532a12f0e7/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>출력값<img src="https://velog.velcdn.com/images/heajin0305_/post/ce4e8833-bc76-4123-b077-c82c1a5aebf2/image.png" alt=""></p>
</blockquote>
<p>&lt;출처 : <a href="https://www.acmicpc.net/problem/15953">https://www.acmicpc.net/problem/15953</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] - 설탕 배달 봉지 갯수 구하기]]></title>
            <link>https://velog.io/@heajin0305_/%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC-%EB%B4%89%EC%A7%80-%EA%B0%AF%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@heajin0305_/%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC-%EB%B4%89%EC%A7%80-%EA%B0%AF%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 21 Apr 2022 05:55:14 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>&lt; 문제 &gt;<ent> 
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. <ent> 
상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. <ent> 
 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.
상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다.<ent> 
예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.
상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오</p>
</blockquote>
<pre><code class="language-java">package study;

import java.util.Scanner;

public class sang {

    public static void main(String[] args) {

        // 설탕 kg 입력하기 위한 scanner메서드
        Scanner sc = new Scanner(System.in);
        System.out.println(&quot;kg수를 입력해주세요 : &quot;);
        // Nkg = 입력받을 설탕 kg 변수
        int Nkg = sc.nextInt();
        // 봉지 갯수 변수
        int count = 0;

        while(true) {
            // Nkg / 5 의 나머지가 0일때
            if(Nkg % 5 == 0) {
                count = Nkg/5;
                System.out.println(Nkg/5 + count + &quot;봉&quot;);
                break;
            // Nkg 가 0 또는 음수일때
            }else if(Nkg &lt; 0) {
                System.out.println(-1);
                break;
            }
            // Nkg를 5로 나눴을 때 나머지가 0이아닌 수를 가져와 3을 뺀후 다시 if문으로 돌아간다
            // count++ 로 3kg 봉지 갯수 하나 세주기
            Nkg = Nkg - 3;
            count++;
    }

}
}</code></pre>
<p>&lt;출처 : <a href="https://www.acmicpc.net/problem/2839">https://www.acmicpc.net/problem/2839</a> &gt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JAVA ShoppingMall Project]]></title>
            <link>https://velog.io/@heajin0305_/ShoppingMall-Project</link>
            <guid>https://velog.io/@heajin0305_/ShoppingMall-Project</guid>
            <pubDate>Tue, 19 Apr 2022 18:58:23 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-java-shoppingmall-project">📌 java ShoppingMall Project</h3>
<h3 id="📌-쇼핑몰-코드-짜기-전-설계도">📌 쇼핑몰 코드 짜기 전 설계도</h3>
<blockquote>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/ef4a31ad-8106-445a-9587-9a2811ce8abb/image.png" alt=""></p>
</blockquote>
<h3 id="📌-관리자-메뉴-클래스">📌 관리자 메뉴 클래스</h3>
<pre><code class="language-java">package project;

import java.util.Scanner;

public class Manager {

    Scanner sc = new Scanner(System.in);

    private boolean start = true; // start라는 변수를 생성해줌으로 써 주문하기 클래스에서도 사용
    // 비밀번호를 int로 설정할 경우 맨앞자리에 0이 들어갔을때 컴퓨터가 인식이 안될수도 있기 때문에 string으로 설정
    final private String PASSWORD = &quot;8520&quot;; // 관리자 메뉴 비밀번호 설정


    // getter, setter 생성
    public boolean isStart() {
        return start;
    }

    public void setStart(boolean start) {
        this.start = start;
    }

    public void ManagerShop(){
        while(isStart()) {
            System.out.println(&quot;비밀번호를 입력해주세요 : &quot;);
            String num = sc.nextLine(); 
            // 비밀번호가 맞을때
            if(num.equals(PASSWORD)) {
                System.out.println(&quot;비밀번호가 일치합니다&quot;);
                System.out.println(&quot;준비된 수량이 마감되어 오늘 하루 주문을 마감하겠습니다.&quot;);
                // 비밀번호가 일치하였을 때 while문 종료
                break;
            // 비밀번호가 틀렸을때    
            }else {
                System.out.println(&quot;비밀번호가 불일치합니다 다시 입력바랍니다.&quot;);
            }
        }
    }        
}</code></pre>
<h3 id="📌-주문하기-메뉴-클래스">📌 주문하기 메뉴 클래스</h3>
<pre><code class="language-java">package project;

import java.util.Random;
import java.util.Scanner;

// start 라는 변수를 사용하기 위해 Manager 클래스 상속
public class Order extends Manager {

    Scanner sc = new Scanner(System.in);
    // 주문번호를 랜덤으로 받기위한 랜덤메소드 호출
    Random r = new Random();

    private int jeanCnt = 0; // 청바지 갯수
    private int outerCnt = 0; // 가디건 갯수
    private int neatCnt = 0; // 니트 갯수
    private int skirtCnt = 0; // 치마갯수

    public void OrderShop(){

        // 다음 손님을 위한 장바구니 리셋
        jeanCnt = 0; 
        outerCnt = 0; 
        neatCnt = 0; 
        skirtCnt = 0; 

    while(isStart()) {
        // 상품번호 설명하는 출력
        System.out.println(&quot;원하시는 상품번호를 입력하시면 장바구니에 추가 됩니다&quot;);
        System.out.println(&quot;1. 청바지 : 15000원&quot;);
        System.out.println(&quot;2. 가디건 : 25000원&quot;);
        System.out.println(&quot;3. 니트 : 20000원&quot;);
        System.out.println(&quot;4. 치마 : 10000원&quot;);
        System.out.println(&quot;5. 결제하기&quot;);
        System.out.println(&quot;6. 장바구니 비우기&quot;);
        System.out.print(&quot;번호 입력 : &quot;);

        // 관리자 메뉴에서 nextLine을 사용해야 하기때문에 nextInt가 여기서 쓰이면 문제가 발생할 수 있기 때문에
        // 대신 Integer.parseInt를 사용하여 nextLine을 int타입으로 바꿔주기 
        int choice = Integer.parseInt(sc.nextLine());
        if(choice == 1) {
            jeanCnt++;
            System.out.println(&quot;청바지 한개가 추가되었습니다.&quot;);
        }else if(choice == 2) {
            outerCnt++;
            System.out.println(&quot;가디건 한개가 추가되었습니다.&quot;);
        }else if(choice == 3) {
            neatCnt++;
            System.out.println(&quot;니트 한개가 추가되었습니다.&quot;);
        }else if(choice == 4) {
            skirtCnt++;
            System.out.println(&quot;치마 한개가 추가되었습니다.&quot;);
        }else if(choice == 5) {
            // 결제하기
            int totalCost = jeanCnt*15000 + outerCnt*25000
                     + neatCnt*20000 + skirtCnt*10000;

            System.out.println(&quot;총 금액은 &quot; + totalCost + &quot;원 입니다&quot;);
            System.out.println(&quot;결제를 시작하시겠습니까 ? &quot;);
            System.out.println(&quot;1. YES // 2. NO&quot;);
            // 결제 여부를 위한 변수선언
            int money = Integer.parseInt(sc.nextLine()); // 위와같은 이유로 Line사용

            while(isStart()) {
                if(money == 1) {// 1. YES를 입력했을때
                    System.out.println(&quot;카드결제 하시려면 카드를 입력하시고, 무통장입금은 무통장입금을 입력해주세요&quot;);
                    String input = sc.nextLine();
                    if(input.equals(&quot;카드&quot;)) {
                        System.out.println(&quot;주소를 입력해 주세요 : &quot;);
                        String home = sc.nextLine();
                        System.out.printf(&quot;주문번호는 &quot; + &quot;%06d번 입니다\n&quot;, r.nextInt(999999)+1);
                        System.out.println(home + &quot;으로 배달 예정입니다 주문해주셔서 감사합니다.&quot;);
                        return; // 주문이 끝낫으므로 메인메뉴로 이동
                        // %06d 는 랜덤 숫자를 6자리로 받기 위해 printf를 사용 
                        // r.nextInt(999999)+1 는 0부터가 아닌 1부터의 숫자를 받아오기 위해서 +1을 해줌
                    }else if(input.equals(&quot;무통장입금&quot;)) {
                        System.out.println(&quot;주소를 입력해 주세요 : &quot;);
                        String home = sc.nextLine();
                        System.out.printf(&quot;주문번호는 &quot; + &quot;%06d번 입니다\n&quot;, r.nextInt(999999)+1);
                        System.out.println(&quot;3333-12-123-1234로 &quot; + totalCost + &quot;원 입금부탁드리겠습니다&quot;);
                        System.out.println(home + &quot;으로 배달 예정입니다 주문해주셔서 감사합니다.&quot;);
                        System.out.println(&quot;-----------------------------------------------------&quot;);
                        return;
                    }else {
                        System.out.println(&quot;정확하게 다시 입력해주세요&quot;);
                        // 주문하기 창으로 돌아가는데 입력칸으로 돌아가려면 생각해보기
                    }        
                }if(money == 2){// 2. NO를 입력했을때
                    System.out.println(&quot;다시 주문화면으로 돌아갑니다&quot;);
                    break; // 맨처음 while문으로 즉시 간다
                }
            }
        // 장바구니 비우기     
        }else if(choice == 6) {
            System.out.println(&quot;장바구니를 비우겠습니까?&quot;);
            System.out.println(&quot;1. YES || 2. NO&quot;);
            int el = Integer.parseInt(sc.nextLine());
            switch(el) {
                case 1:
                    jeanCnt = 0;
                    outerCnt = 0;
                    neatCnt = 0;
                    skirtCnt = 0;
                default:    
            }
        }else {
            System.out.println(&quot;다시 입력해주세요.&quot;); // 처음 주문란에서 번호 잘못 입력
        }
        // 장바구니
        System.out.println(&quot;---------------------------------------&quot;);
        System.out.println(&quot;==고객님의 장바구니==&quot;);
        System.out.println(&quot;청바지 : &quot; + jeanCnt + &quot;개 = 총 &quot; + jeanCnt*15000 + &quot;원&quot;);
        System.out.println(&quot;가디건 : &quot; + outerCnt + &quot;개 = 총 &quot; + outerCnt*25000 + &quot;원&quot;);
        System.out.println(&quot;니트 : &quot; + neatCnt + &quot;개 = 총 &quot; + neatCnt*20000 + &quot;원&quot;);
        System.out.println(&quot;치마 : &quot; + skirtCnt + &quot;개 = 총 &quot; + skirtCnt*10000 + &quot;원&quot;);
        System.out.println(&quot;총 금액 : &quot; + (jeanCnt*15000 + 
                outerCnt*25000 + neatCnt*20000 + skirtCnt*10000 + &quot;원 입니다&quot;));
        System.out.println(&quot;---------------------------------------&quot;);

    }


}
}
</code></pre>
<h3 id="📌-메인메뉴-클래스">📌 메인메뉴 클래스</h3>
<pre><code class="language-java">package project;

import java.util.Scanner;

public class main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        // 주문화면 객체생성 
        Order or = new Order();
        // 관리자메뉴 객체생성
        Manager ma = new Manager();

        while(true) {
            System.out.println(&quot;===== 메인화면 =====&quot;);
            System.out.println(&quot;1. 주문하기&quot;);
            System.out.println(&quot;2. 관리자모드&quot;);
            System.out.print(&quot;원하시는 번호를 입력하세요 : &quot;);

            int choice = Integer.parseInt(sc.nextLine());

            if(choice == 1) {
                or.OrderShop();
            }else if(choice == 2) {
                ma.ManagerShop();
                break;
            }else {
                System.out.println(&quot;번호를 잘못입력하셧습니다.&quot;);
                System.out.println(&quot;다시 입력 바랍니다.&quot;);
            }

        }
    }

}</code></pre>
<h3 id="📌-출력-값">📌 출력 값</h3>
<blockquote>
<pre><code>👉 주문하기 출력해보기</code></pre></blockquote>
<h5 id="장바구니에-담고싶은-물건의-각-번호14를-입력---자동으로-장바구니에-담깁니다-장바구니를-비우고-싶을땐-6번을-입력---장바구니안에-있는-모든-상품들이-초기화됩니다-결제하기-5번-입력---카드무통장입금-중-결제할-수단을-입력-후-주소를-입력하면-자동으로-랜덤-주문번호-주소-계좌번호무통장입금만-해당이-출력된-후-다시-메인메뉴로-돌아갑니다">장바구니에 담고싶은 물건의 각 번호(1~4)를 입력 -&gt; 자동으로 장바구니에 담깁니다. 장바구니를 비우고 싶을땐 6번을 입력 -&gt; 장바구니안에 있는 모든 상품들이 초기화됩니다. 결제하기 5번 입력 -&gt; 카드/무통장입금 중 결제할 수단을 입력 후 주소를 입력하면 자동으로 랜덤 주문번호, 주소, 계좌번호(무통장입금만 해당)이 출력된 후 다시 메인메뉴로 돌아갑니다.</h5>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/79b589e4-6cec-45a4-86bf-0cc32e112416/image.png" alt=""><img src="https://velog.velcdn.com/images/heajin0305_/post/db4fa5f5-14d1-4c40-a00c-6e3a06e77b7c/image.png" alt=""></p>
<blockquote>
<pre><code>👉 관리자메뉴 출력해보기</code></pre></blockquote>
<h5 id="미리-설정한-비밀번호인-8520-이외의-번호를-입력하였을-때에는비밀번호가-불일치합니다-다시-입력바랍니다-출력-후--다시-비밀번호-입력칸으로-돌아가게끔-코드작성을-해보았습니다">미리 설정한 비밀번호인 &quot;8520&quot; 이외의 번호를 입력하였을 때에는비밀번호가 불일치합니다 다시 입력바랍니다 출력 후 , 다시 비밀번호 입력칸으로 돌아가게끔 코드작성을 해보았습니다**</h5>
<p><img src="https://velog.velcdn.com/images/heajin0305_/post/99f1f7ca-0a5a-4fa5-98da-0dfe63d0d7f9/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>