[문제]


reverseStr 메소드는 String형 변수 str을 매개변수로 입력받습니다.
str에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 String을 리턴해주세요.
str는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
예를들어 str이 Zbcdefg면 gfedcbZ을 리턴하면 됩니다.




[내 문제 풀이]



public class ReverseStr {
    public String reverseStr(String str) {
        String result ="";
        int x = str.length();
        char[] ar = new char[x];

        for (int i = 0; i < x; i = i + 1) {
            ar[i] = str.charAt(i);
        }

        for (int i = 0; i < x; i = i + 1) {
            for (int j = 1+i; j < x ; j = j + 1) {
                if (ar[i] < ar[j]) {
                    char temp = ar[i];
                    ar[i] = ar[j];
                    ar[j] = temp;

                }
            }
        }

        for(int i = 0; i<x; i=i+1) {
            result = result + ar[i]+"";
        }

        return result;
    }

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




[다른 분 문제 풀이]


import java.util.Arrays;

public class ReverseStr {
    public String reverseStr(String str){
// toCharArray로 배열로 변환
    char[] sol = str.toCharArray();
    Arrays.sort(sol);
    return new StringBuilder(new String(sol)).reverse().toString();
    }

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




[버블정렬]


public class ReverseStr {
    public String reverseStr(String str){
    char[] chars = str.toCharArray();
     char temp =' ';

     for(int i = 0; i < str.length(); i++){
         for(int j = 0; j < str.length()-1 ; j++){
             if( chars[j] < chars[j+1]){
                 temp = chars[j];
                 chars[j] = chars[j+1];
                 chars[j+1] = temp;
             }
         }
     }
     str = new String(chars, 0, chars.length);
        return str;
    }

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


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

서울에서김서방찾기  (0) 2018.02.22
수박수박수박수박수박수?  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
역삼각형 출력하기  (0) 2018.01.14


출처 : https://programmers.co.kr/learn/challenge_codes/106

[문제]

findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.

seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하세요.
seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.



[내 문제풀이]

package a;


public class FindKim {

public String findKim(String[] seoul){

//x에 김서방의 위치를 저장하세요.

int x = 0;

int n = seoul.length;

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

if(seoul[i].equals("Kim")) {

x=i;

}

}

return "김서방은 "+ x + "에 있다";

}

// 실행을 위한 테스트코드입니다.

public static void main(String[] args) {

FindKim kim = new FindKim();

String[] names = {"Queen", "Tod","Kim"};

System.out.println(kim.findKim(names));

}

}



[다른사람 문제 풀이]


import java.util.Arrays;

public class FindKim {
    public String findKim(String[] seoul){
        return "김서방은 "+ Arrays.asList(seoul).indexOf("Kim") + "에 있다";
    }

    // 실행을 위한 테스트코드입니다.
    public static void main(String[] args) {
        FindKim kim = new FindKim();
        String[] names = {"Queen", "Tod","Kim"};
        System.out.println(kim.findKim(names));
    }
}


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

문자열 내림차순으로 배치하기  (0) 2018.02.28
수박수박수박수박수박수?  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
역삼각형 출력하기  (0) 2018.01.14

[문제]

출처 :https://programmers.co.kr/learn/challenge_codes/109

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

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



[내가 푼 풀이법]

public class WaterMelon {

public String watermelon(int n){

String ar [] = {"수","박"};

String sum = "";

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

sum+= ar[i%2];

}

//마지막에 equals로 n과 값이 같다면으로 물어보면 되겠네 

return sum;

}


// 실행을 위한 테스트코드입니다.

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));

}

}



[다른사람분의 풀이법]


public class WaterMelon {
    public String watermelon(int n){

        return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
    }

    // 실행을 위한 테스트코드입니다.
    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));
    }
}


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

문자열 내림차순으로 배치하기  (0) 2018.02.28
서울에서김서방찾기  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
역삼각형 출력하기  (0) 2018.01.14



[문제]


getMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다.
예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다.



[나의 문제 풀이]

class StringExercise {

String getMiddle(String word) {

// 입력받은 문자열을 배열에 담을 것인가 ?

// 입력받은 문자열을

// 3 5 7 9 = 1씩증가

// 2 4 6 8 = 0, 1,2,3 1씩증가

String result= "";

int count = word.length();

Character[] a = new Character[count];

int idx = 0;

while (idx < count) {

a[idx] = word.charAt(idx);

idx +=1;

}

int x = count/2 ;

if(count%2 !=0 )

result = a[x]+"";

else if (count%2 ==0)

result = a[x-1]+""+a[x];

return result;

}


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

public static void main(String[] args) {

StringExercise se = new StringExercise();

System.out.println(se.getMiddle("test"));

}

}





[다른사람 사람 문제 풀이 ] 
class StringExercise{
    String getMiddle(String word){

        return word.substring((word.length()-1)/2, word.length()/2 + 1);    
    }
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        StringExercise se = new StringExercise();
        System.out.println(se.getMiddle("power"));
    } 

}

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

서울에서김서방찾기  (0) 2018.02.22
수박수박수박수박수박수?  (0) 2018.02.22
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
역삼각형 출력하기  (0) 2018.01.14
약수의 모든 합을 구하시오.  (0) 2018.01.14

[문제]

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

역삼각형 출력하기

printReversedTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.
다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printReversedTriangle 메소드를 완성하세요

높이(num)가 3일때 다음과 같은 문자열을 리턴하면 됩니다.

***
**
*


[내문제 풀이]




[다른 사람문제 풀이 ]



function printReversedTriangle(n) {
  return n > 0 ? '*'.repeat(n) + '\n' + printReversedTriangle(n-1) : '';
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " +'\n'+ printReversedTriangle(3));

위의 자바 스크립트는



[다른 사람문제 풀이 ]





function printReversedTriangle(numlet result = ""for ( let i = num; i > 0; i-- ) { for ( let j = 0; j < i; j++ ) { result += "*" } result += "\n" } return result }


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

서울에서김서방찾기  (0) 2018.02.22
수박수박수박수박수박수?  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
약수의 모든 합을 구하시오.  (0) 2018.01.14

출처 : https://programmers.co.kr/learn/challenge_codes/1 사이트 



최근에 알고리즘 공부를 시작했습니다.

사실 너무 어렵기도 해서 포기할까 하다가 

조금씩 하루에 하나씩 풀어보기로 했습니다. 


1.약수의 모든 합을 구하시오 

프로그래머스 사이트에서 출제된 약수의 모든 합을 구하는 문제입니다. 




어떻게 풀까 고민도 많이하다가 

하나씩 생각해보기로 했습니다. 


1. 입력받은 값의 12의 약수를 구하려면, 우선 뭐가 필요한가 ? 

     반복문이 필요하다 

2. 입력받은 값의 num의 약수의합을 구하려면, 나누어 떨어지는 수를 구해야한다는 것을 알 필요가 있었고

3. 반복문 안에 if 문을 넣어 0과 같다면 그 수를 더하는 방식으로 풀면된다는 것을 생각했습니다. 



[내 풀이]






[다른 분의 풀이 방법 ]

이 문제는 약수의 합을 구하는 방식이므로 

num/2를 통해 반복문을 최소화 할 수 있습니다. 






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

서울에서김서방찾기  (0) 2018.02.22
수박수박수박수박수박수?  (0) 2018.02.22
가운데 글자 가져오기  (0) 2018.01.23
<공부가 더필요 > 삼각형 출력하기  (0) 2018.01.21
역삼각형 출력하기  (0) 2018.01.14

+ Recent posts