EXCELSIOR

[Level1] 수박수박수박수박수박수? (WaterMelon) 본문

카테고리 없음

[Level1] 수박수박수박수박수박수? (WaterMelon)

Excelsior-JH 2016. 10. 17. 21:15

1. 문제

water_melon함수는 정수 n을 매개변수로 입력받습니다.
길이가 n이고, 수박수박수...와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.

예를들어 n이 4이면 '수박수박'을 리턴하고 3이라면 '수박수'를 리턴하면 됩니다.


2. 풀이

1) 내가 작성한 코드

- 홀수, 짝수 판별하는 문제와 같이 나머지가 0 or 1인지를 판별하여 String에 더해주는 방식으로 문제를 풀었다.

public class WaterMelon {
    public String watermelon(int n){
        //String str[] = new String[n];
    String str = "";
    for(int i=0; i<n; i++){
      if(i%2==0)
        str += "수";
      else 
        str += "박";
    }
        return str;
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}

2) 다른 풀이

- StringBuffer와 append메소드를 사용하여 풀었다. → 이 부분에 대해서는 잘 모르기 때문에 추후 공부가 필요할듯 하다.


public class WaterMelon {
    public String watermelon(int n){
        StringBuffer sf = new StringBuffer();
        for (int i=1; i<=n; ++i) {
            sf.append(i%2==1?"수":"박");
        }
        return sf.toString();
    }

    // 실행을 위한 테스트코드입니다.
    public static void  main(String[] args){
        WaterMelon wm = new WaterMelon();
        System.out.println("n이 3인 경우: " + wm.watermelon(3));
        System.out.println("n이 4인 경우: " + wm.watermelon(4));
    }
}



3. 알아둘것

1) StringBuffer 클래스

- StringBuffer 클래스는 변하는 문자열을 다룰때 사용한다. StringBuffer 클래스의 객체의 크기는 동적인데, 크기를 지정하지 않아도 기본적으로 16개의 문자를 저장할 수 있는 Buffer를 가진다.

- String은 한번 생성되면 그 내용이 변하지 않지만, StringBuffer는 생성된 후에도 문자열의 내용을 변경할 수 있다.


2) StringBuffer 클래스 생성자

StringBuffer 클래스 생성자

설 명 

StringBuffer() 

초기 문자열이 없고 16개의 문자를 저장할 수 있는 버퍼를 가진 객체를 생성한다. 

StringBuffer(String str)

str의 초기 문자열을 가지고 16개의 문자를 저장할 수 있는 버퍼를 가진 객체를 생성한다.

 StringBuffer(int length)

초기 문자열이 없고 length개의 문자를 저장할 수 있는 버퍼를 가진 객체를 생성한다.


3) StringBuffer 클래스의 메소드

 StringBuffer 클래스 메소드

설 명 

StringBuffer append(boolean b)

boolean 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(char c) 

char 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(char[] str) 

문자 배열 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(char[] str, int offset, int len) 

문자 배열의 offset부터 len개의 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(double d) 

double 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(float f) 

float 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(int i) 

int 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(long l) 

long 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(Object obj) 

객체 데이터를 현재 문자열 끝에 추가한다. 

StringBuffer append(String str) 

문자열 데이터를 현재 문자열 끝에 추가한다. 

StirngBuffer append(StirngBuffer sb) 

문자열 데이터를 현재 문자열 끝에 추가한다. 

int capacity() 

현재 문자열의 총 용량이다.

char charAt(int index) 

index 위치의 문자를 반환한다. 

StringBuffer delete(int start, int end) 

start에서 end까지의 문자열 중에서 삭제한 문자열을 반환한다. 

StringBuffer deleteCharAt(int index) 

index 위치의 문자 중 삭제한 문자열을 반환 한다. 

int indexOf(String str) 

str 문자열의 인덱스 위치를 반환한다. 

int indexOf(String str, int fromIndex) 

특정 위치로부터 시작하여 str 문자열의 인덱스 위치를 반환한다. 

StringBuffer insert(int offset, boolean b) 

offset 위치에 boolean 데이터를 삽입한다. 

StringBuffer insert(int offset, char c) 

offset 위치에 char 데이터를 삽입한다. 

StringBuffer insert(int offset, char[] str) 

offset 위치에 문자 배열 데이터를 삽입한다. 

StringBuffer insert

(int index, char[] str, int offset, int len) 

offset 위치에 문자 배열의 일부 문자 데이터를 삽입한다. 

StringBuffer insert(int offset, double d) 

offset 위치에 double 데이터를 삽입한다. 

StringBuffer insert(int offset, float f) 

offset 위치에 float 데이터를 삽입한다. 

StringBuffer insert(int offset, int i) 

offset 위치에 int 데이터를 삽입한다. 

StringBuffer insert(int offset, long l) 

offset 위치에 long 데이터를 삽입한다. 

StirngBuffer insert(int offset, String str) 

offset 위치에 문자열 데이터를 삽입한다. 

StringBuffer insert(int offset, Object obj) 

offset 위치에 객체 데이터를 삽입한다. 

int lastIndexOf(String str) 

str의 최종 인덱스 위치를 반환한다. 

int lastIndexOf(String str, int fromIndex)

fromIndex로부터 시작하여 str의 최종 인덱스 위치를 반환한다. 

int length() 

문자열 내의 문자 개수를 반환한다. 

StringBuffer replace(int start, int end, String str) 

start에서 end의 문자열을 str 문자열로 대체하여 반환한다. 

StringBuffer reverse() 

문자열의 역순으로 된 문자열을 반환한다. 

void setCharAt(int index, char ch) 

index 위치의 문자를 ch 문자로 설정한다. 

void setLength(int newLength) 

문자열의 버퍼 크기를 새롭게 설정한다. 

String substring(int start) 

start 위치로부터의 일부 문자열을 반환한다. 

String substring(int start, int end) 

start에서 end까지의 일부 문자열을 반환한다. 

String toString()

String으로 변환한다. 


                                                                           [출처: http://hyeonstorage.tistory.com/179]




Comments