[문제]

printTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다. 다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요 printTriangle이 return하는 String은 개행문자(‘\n’)로 끝나야 합니다.


[문제 풀이 실패 ] 

package programs;


public class PrintTriangle {


public String printTriangle(int num){


String star= "*";

String result = "";

int i = 0;

while (i < num) {

int j = 0;

while (j < i+1) {

   

j = j + 1;

result = result+star;

}

i = i + 1;

result =result+ "\n";

}

return result;

}

public static void main(String[] args) {

PrintTriangle pt = new PrintTriangle();

System.out.println( pt.printTriangle(5) );

}

}




리턴의 개념을 제대로 이해하지 못해서, 값을 리턴해내지 못함, 

다른 접근 방법과 리턴에 대한 개념에 대해 다시 공부할 필요가 있음 

 





[다른사람 문제풀이 ]


package programs;


public class PrintTriangle {


public String printTriangle(int num){

String stars= "*";

String result = "";

for(int i=0; i<num; ++i){

//result 에 저장 

          result += stars+"\n";

          stars += "*";

      }

return result;

}


// 아래는 테스트로 출력해 보기 위한 코드입니다.

public static void main(String[] args) {

PrintTriangle pt = new PrintTriangle();

System.out.println(pt.printTriangle(5));

}

}

// 아래는 테스트로 출력해 보기 위한 코드입니다.



[다른사람 풀이 2 ]

public class PrintTriangle {
  public String printTriangle(int num){
    String result = "";
    for(int i=1; i<=num; i++){
      String star = new String(new char[i]).replace("\0", "*");
      result += star + "\n";
    }
    return result;
  }

  // 아래는 테스트로 출력해 보기 위한 코드입니다.
  public static void main(String[] args) {
    PrintTriangle pt = new PrintTriangle();
    System.out.println(pt.printTriangle(3) );
  }
}


  String star = new String(new char[i]).replace("\0", "*");
위의 구문에 대한 공부가 필요함 
public class PrintTriangle {
    public String printTriangle(int num){
    String result="";

        for(int i=1; i<=num; i++){
            for(int j=0; j<i; j++){
                result+="*";
            }
            result+="\n";
        }

        return result;      
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        PrintTriangle pt = new PrintTriangle();
        System.out.println( pt.printTriangle(3) );
    }
}


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

서울에서김서방찾기  (0) 2018.02.22
수박수박수박수박수박수?  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
역삼각형 출력하기  (0) 2018.01.14
약수의 모든 합을 구하시오.  (0) 2018.01.14
[문제] 출처 https://programmers.co.kr/learn/challenge_codes/112

strToInt 메소드는 String형 str을 매개변수로 받습니다.
str을 숫자로 변환한 결과를 반환하도록 strToInt를 완성하세요.
예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.




package programs;

public class StrToInt {

	    public int getStrToInt(String str) {

	    	
	    	
	        return Integer.parseInt(str);
	    }
	    //아래는 테스트로 출력해 보기 위한 코드입니다.
	    public static void main(String args[]) {
	        StrToInt strToInt = new StrToInt();
	        System.out.println(strToInt.getStrToInt("-1234"));
	    }
	}





package programs;

public class StrToInt {
	public int getStrToInt(String str) {
		boolean Sign = true;
		int result = 0;

		for (int i = 0; i < str.length(); i++) {
			char ch = str.charAt(i);
			if (ch == '-')
				Sign = false;
			else if (ch != '+')
				// 아스키 코드에서 문자 1은 49 0은 48입니다. 두문자를 빼면 1
				// 아스키 코드에서 문자 2은 50 0은 48입니다. 두문자를 빼면 2
				// result에서 rsult *10을 해준 이유는 자리수를 맞추기 위해서 입니다. 
				// 처음 1이 나올 때는 result깞이 0이기에 곱했을때 1은첫째자리에 위치하게 됩니다.
				// 다음 result 값은 1이기에 곱하면 1*10하면 10+(2)를 더하면 12가되고 
				// 다음 result 값은 12이기에*10을통해 120+(3)을해서 조금씩 자릿수를 늘려나갈 수 있습니다. 
				result = result * 10 + (ch - '0');
		}
		return Sign ? 1 : -1 * result;
	}

	// 아래는 테스트로 출력해 보기 위한 코드입니다.
	public static void main(String args[]) {
		StrToInt strToInt = new StrToInt();
		System.out.println(strToInt.getStrToInt("-1234"));
	}
}


'Java > 자바 공부' 카테고리의 다른 글

dao  (0) 2018.01.29
view  (0) 2018.01.29
꼭공부) 로또번호  (0) 2018.01.21
버블정렬  (0) 2018.01.20
선택정렬  (0) 2018.01.20

package java1226;


public class Array_max {


public static void main(String[] args) {

int[] ar = { 74, 23, 97, 67, 28 };

int size = ar.length;

int i = 0; // 0은 인덱스입니다.

int j = 0; // 최소값 인덱스 .

int count = 0;

int max = ar[0];

int min = ar[0];

int max_pos =0;

int pos = 0; // 작은 값의 위치를 저장할 변수

// 최대값

while (i < size) {


if (max < ar[i]) {

max = ar[i];

max_pos = i;

}


i = i + 1;


}

// 최소값

while (j < size) {


if (min > ar[j]) {

min = ar[j];

pos = j;// 최소값을 찾았을 때 그 위치를 저장

}


j = j + 1;


}


System.out.println(max);

System.out.println(min);

System.out.println("max : " + max_pos);

System.out.println("max : " + pos);

}


}



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

삽입 정렬  (0) 2018.03.28
유클리드 알고리즘  (0) 2018.03.11
선택정렬 정리  (0) 2018.03.06
피보나치수열 공부  (0) 2018.01.23

package Lotto;


import java.util.ArrayList;

import java.util.HashSet;

import java.util.Random;


public class LottoMain {

public static void main(String[] args) {


// 로또 번호 출력하기

// 클래스 랜덤을 가져온다.

// Random 클래스 : 랜덤한 숫자를 만들어내기 위한 클래스

// 매개 변수 없는 생정자로 만들면 정말 랜덤이 되고

// 매개변수에 seed값을 설정하면 seed에 있는 숫자들이 하나씩

// 순서대로 리턴됩니다.

Random Lotto = new Random();

// 45나눈 나머지 값만 랜덤한 수를 만들어냅니다.

// System.out.println(Lotto.nextInt());


/// 1-45사이의 숫자를 6개 랜덤하게 저장햇거 출력

// 숫자는 중복되면 안됩니다.


// for (int i = 1; i <= 6; i++) {

// int a = Lotto.nextInt(45);

// boolean b =true;

// for (int j=0; j<= 6; j++) {

// if (a == j + 1) {

// i = i - 1;

// System.out.println();

// break;

// }

//

// if(false==b) {

//

// continue;

// }

//

// }

// System.out.println();

// }

// Set은 중복된 데이터를 저장하지 않음

// Tree는 크기순으로 저장

//

// TreeSet<Integer> random = new TreeSet<Integer>();

// while (random.size() < 6) {

// random.add(Lotto.nextInt(45) + 1); // 랜덤한 숫자를 넣어라

// }

// System.out.println(random);


System.out.println("=====================================================");

// 데이터 샘플링

// 정해진 데이터 내에서 랜덤하게 데이터를 추출하는 것

// 동일한 데이터가 추출되도 되는 경우와 그렇지 않은 경우로

// 나누어서처리

// 배열이나 리스트에 정해진 데이터를 배치하고 난 후

// 배열이나 리스트이 인덱스를 랜덤한 정수로 대입하면 됩니다.


// A,B,C,D,E 중에서 랜덤하게 3개 추출

// 중복을 허용

String[] ar = { "A", "B", "C", "D", "E", "F" };

for (int i = 0; i < 3; i = i + 1) {

System.out.print(ar[Lotto.nextInt(ar.length)] + ",");

}


// 시드 고정 -일정한 패턴의 숫자가 순서대로 출력

// Lotto.setSeed(1000);

System.out.println(Lotto.nextInt());

// ABCDEFGHIJ -- 각각은 하나의 스트링

// 10개중에서 3개를 랜덤하게 추출

// 중복된 데이터 없이 추출

// 1 . 데이터를 하나에 배열이나 리스트로 만들어야한다.

ArrayList<String> si = new ArrayList<String>();

si.add("A");

si.add("B");

si.add("C");

si.add("D");

si.add("E");

si.add("F");

si.add("G");

si.add("H");

si.add("I");

si.add("J");


// 2. 데이터가 10이므로 0-9까지의 숫자 3개를 랜덤하게

// 생서해야합니다. -중복되지 않게

Random b = new Random();

// 중복된 데이터를 저장하지 않는 컬렉션을 생성

HashSet<Integer> set = new HashSet<Integer>();

while (set.size() < 3) {

set.add(b.nextInt(5)); // 추가한다. set.size 하나씩 넣어지는 것

}

System.out.print(set);

// 3. 2번에서 생성한 숫자들을 가지고 1번에서 데이터를 추출

for (Integer ism : set) {

System.out.print(si.get(ism));

}


}


}



'Java > 자바 공부' 카테고리의 다른 글

view  (0) 2018.01.29
스트링을 숫자로 바꾸기  (0) 2018.01.21
버블정렬  (0) 2018.01.20
선택정렬  (0) 2018.01.20
super() 와 부모  (0) 2018.01.20

package 공부;


public class BubleSort {


public static void main(String[] args) {


int[] ar = { 24, 25, 26, 55, 74, 5 };


int i = 1;

while ( i<ar.length) {

int j = 0;

while (j <ar.length-i ) {

//  버블 정렬은 오른쪽으로 수를 정렬해주는 알고리즘입니다. 

// 하나씩 오른쪽으로 가장 큰수를 정렬해주기 때문에 

// 정렬한 곳은 비교할 이유가 없기에 반복문에서 감소 시켜주어야만 

// 예외가 발생하지 않습니다. 

if (ar[j] > ar[j + 1]) {

int temp = ar[j];

ar[j] = ar[j + 1];

ar[j + 1] = temp;

}

j = j + 1;

}

i = i + 1;

}

for (i = 0; i < ar.length; i++) {

System.out.println(ar[i]);

}

}


}


package 공부;


public class BubleSort {


public static void main(String[] args) {


int[] ar = { 24, 25, 26, 55, 74, 5 };


int i = ar.length;

while ( i>0) {

int j = 0;

while (j <i-1 ) {

//  버블 정렬은 오른쪽으로 수를 정렬해주는 알고리즘입니다. 

// 하나씩 오른쪽으로 가장 큰수를 정렬해주기 때문에 

// 정렬한 곳은 비교할 이유가 없기에 반복문에서 감소 시켜주어야만 

// 예외가 발생하지 않습니다. 

if (ar[j] > ar[j + 1]) {

int temp = ar[j];

ar[j] = ar[j + 1];

ar[j + 1] = temp;

}

j = j + 1;

}

i = i - 1;

}

for (i = 0; i < ar.length; i++) {

System.out.println(ar[i]);

}

}


}





이렇게 감소를 시켜주어서 버블정렬을 해주어만 오류가 생기지 않습니다. 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6

at 공부.BubleSort.main(BubleSort.java:17)

'Java > 자바 공부' 카테고리의 다른 글

스트링을 숫자로 바꾸기  (0) 2018.01.21
꼭공부) 로또번호  (0) 2018.01.21
선택정렬  (0) 2018.01.20
super() 와 부모  (0) 2018.01.20
오버로딩과 오버라이딩  (0) 2018.01.20

package 공부;


public class Choiesort {


public static void main(String[] args) {

// 선택정렬 만들기


int[] ar = { 99, 52, 51, 55, 66, 77 };


int i = 0;

// length는 6이지만 실제 비교는 5까지이다

// 마지막 숫자는 비교할 필요가 없기 때문에

// 낭비를 줄이기 위해 -1 

while (i < ar.length - 1) {


int j = i + 1;

while (j < ar.length) {


if (ar[i] > ar[j]) {


int a1 = ar[i];

ar[i] = ar[j];

ar[j] = a1;


}


j = j + 1;

}


i = i + 1;

}

for (i = 0; i < ar.length; i = i + 1) {

System.out.println(ar[i]);

}


}

}



'Java > 자바 공부' 카테고리의 다른 글

꼭공부) 로또번호  (0) 2018.01.21
버블정렬  (0) 2018.01.20
super() 와 부모  (0) 2018.01.20
오버로딩과 오버라이딩  (0) 2018.01.20
스코프에 대한 정의  (0) 2018.01.20

부모 생성자

    public class Car{
        public Car(){
            System.out.println("Car의 기본생성자입니다.");
        }
    }

    public class Bus extends Car{
        public Bus(){
            System.out.println("Bus의 기본생성자입니다.");
        }

    }
  • 생성자 테스트
    public class BusExam{
        public static void main(String args[]){
            Bus b = new Bus();
        }
    }
  • 결과

Car의 기본생성자입니다. Bus의 기본생성자입니다.

  • new 연산자로 Bus객체를 생성하면, Bus객체가 메모리에 올라갈때 부모인 Car도 함께 메모리에 올라간다.
  • 생성자는 객체를 초기화 하는 일을한다.
  • 생성자가 호출될 때 자동으로 부모의 생성자가 호출되면서 부모객체를 초기화 하게된다.

super

  • 자신을 가리키는 키워드가 this 라면, 부모들 가리키는 키워드는 super
  • super() 는 부모의 생성자를 의미한다.
  • 부모의 생성자를 임의로 호출하지 않으면, 부모 class의 기본 생성자가 자동으로 호출된다.
  • 아래 예제처럼 호출해보면 위에서 super()를 호출하지 않을때와 결과가 같다.
    public Bus(){
        super();
        System.out.println("Bus의 기본생성자입니다.");
    }

부모의 기본생성자가 아닌 다른 생성자를 호출하는 방법

  • 클래스는 기본 생성자가 없는 경우도 존재한다.
    public class Car{
        public Car(String name){
            System.out.println(name + " 을 받아들이는 생성자입니다.");
        }
    }
  • Car class가 위 처럼 수정되면, Bus생성자에서 컴파일 오류가 발생한다.
  • 부모가 기본생성자가 없기 때문에 컴파일 오류가 발생하게 되는 것이다.
  • 이런 문제를 해결하려면 자식 클래스의 생성자에서 직접 부모의 생성자를 호출해야 합니다.
    public Bus(){
        super("소방차"); // 문자열을 매개변수로 받는 부모 생성자를 호출하였다.
        System.out.println("Bus의 기본생성자입니다.");
    }


'Java > 자바 공부' 카테고리의 다른 글

버블정렬  (0) 2018.01.20
선택정렬  (0) 2018.01.20
오버로딩과 오버라이딩  (0) 2018.01.20
스코프에 대한 정의  (0) 2018.01.20
1-1 TCP Server 와 Client  (0) 2018.01.18




[오버 로딩 ] 

클래스 내에 같은 이름을 메서드를 여러개 정의 하는 것을 오버로딩이라고 한다. 

오버로딩은 조건은 

메서드의 이름이 같아야한다. 

매개변수의 개수 또는 타입이 달라야합니다. 


public int hap ( int x , int y ){

return x+y;

}

public int  hap ( int x , int y, int z  ){

return x+y;

}

public String  hap ( String x , String y ){

return x+y;

}


[오버 라이딩 ]

상속 관계에 있는 클래스들에 동일한 원형(이름과 매개변수의 자료형이 동일한메소드)의 메소드가 존재하는 것 




스타크래프트의 Attack 



Public abstract clsss Star() { 


Public void attack() { 


 }

}


public void protos extends Star{

public void attack(){

System.out.print("프로토스의 공격") 

}

}


public void Zerg extends Star{

public void attack(){

System.out.print("저그의 공격") 

}

}


public void Terran extends Star{

public void attack(){

System.out.print("테란의 공격") 

}

}

'Java > 자바 공부' 카테고리의 다른 글

선택정렬  (0) 2018.01.20
super() 와 부모  (0) 2018.01.20
스코프에 대한 정의  (0) 2018.01.20
1-1 TCP Server 와 Client  (0) 2018.01.18
log 파일 분석 > 중복된 ip를 제거하고 출력하는 방법  (0) 2018.01.18

+ Recent posts