level 1. 삼각형출력하기 (java, python)

|

level 1. 삼각형출력하기

출처

문제

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

풀이 (python)

def printTriangle(num):
	s = ""
	for i in range(num):
		s += '*'*(i+1)+'\n'
	return s

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( printTriangle(3) )

다른사람 풀이

def printTriangle(num):
    return ''.join(['*'*i + '\n' for i in range(1,num+1)])

배운점

  • ’‘.join(List) 를 통해서 리스트의 각 요소를 그대로 붙여서 스트링으로 만들 수 있다.

풀이 (java)

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

다른사람 풀이

public class PrintTriangle {
    public String printTriangle(int num){
      String result = "";
      String stars = "*";
      for(int i=0; i<num; ++i){
          result += stars+"\n";
          stars += "*";
      }
      return result;
    }

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

배운점

  • String 클래스의 replace 메소드

level 1. 정수제곱근판별하기

|

level 1. 정수제곱근판별하기

출처

문제

nextSqaure함수는 정수 n을 매개변수로 입력받습니다. n이 임의의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 임의의 정수 x의 제곱이 아니라면 ‘no’을 리턴하는 함수를 완성하세요. 예를들어 n이 121이라면 이는 정수 11의 제곱이므로 (11+1)의 제곱인 144를 리턴하고, 3이라면 ‘no’을 리턴하면 됩니다.

풀이 (python)

# 풀이 1
import math
def nextSqure(n):
    return pow(math.sqrt(n)+1, 2) if int(math.sqrt(n)) == math.sqrt(n) else 'no'

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(nextSqure(121)));

# 풀이 2
def nextSqure(n):
    for i in range(1,n//2):
        if i * i == n:
            return (i + 1) ** 2
        if i * i > n:
            return 'no'

# 풀이 3
def nextSqure(n):
    t = int(pow(n, 0.5))
    return (t+1)**2 if t**2==n else 'no'

# 참고 - 제곱근을 구하는 여러가지 방법
# n ** 5
# pow(n, 0.5)
# math.sqrt(n)

다른사람 풀이

def nextSqure(n):
    sqrt = n ** (1/2)

    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return 'no'
def nextSqure(n):
    sqrt = pow(n, 0.5)
    return pow(sqrt + 1, 2) if sqrt == int(sqrt) else 'no'

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(nextSqure(121)));

배운점

  • 파이썬 삼항 연산자 (conditional expressions)을 활용하니 짧게 코드를 짤 수 있었다.
  • 제곱근을 구하려면 import math 를 통해서 모듈을 임포트하고 math.sqrt() 함수를 통해서 제곱근을 구할 수 있다.
  • int() 를 통해서 주어진 인수를 정수로 변환할 수 있다.
  • pow(4,2)4 ** 2 (=16) 을 통해서 제곱 연산을 할 수 있다.
  • 반대로 pow(4,0.5)4 ** 1/2 (=2) 을 통해서 제곱근을 구할 수 있다.

level 1. 서울에서 김서방 찾기 (java, python)

|

level 1. 서울에서 김서방 찾기

출처

문제

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

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

풀이 (python)

def findKim(seoul):
    kimIdx = seoul.index('Kim')
    return "김서방은 {}에 있다".format(kimIdx)

# 실행을 위한 테스트코드입니다.
print(findKim(["Queen", "Tod", "Kim"]))

배운점

  • List.index() 메소드를 통해 배열에서 특정 요소의 인덱스 값을 찾을 수 있다.

풀이 (java)

public class FindKim {
	public String findKim(String[] seoul){
		//x에 김서방의 위치를 저장하세요.
		int x = 0;
    for(int i=0; i<seoul.length; i++){
      if(seoul[i] == "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){
        //x에 김서방의 위치를 저장하세요.
        int x = Arrays.asList(seoul).indexOf("Kim");

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

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

level 1. 짝수와 홀수 - 삼항연산자 (Java, Python)

|

level 1. 짝수와 홀수

출처

문제

evenOrOdd 메소드는 int형 num을 매개변수로 받습니다. num이 짝수일 경우 “Even”을 반환하고 홀수인 경우 “Odd”를 반환하도록 evenOrOdd에 코드를 작성해 보세요. num은 0이상의 정수이며, num이 음수인 경우는 없습니다.

풀이 (python)

def evenOrOdd(num):
	return 'Odd' if num % 2 else 'Even'

#아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + evenOrOdd(3))
print("결과 : " + evenOrOdd(2))

다른사람 풀이 (Python)

def evenOrOdd(num):
    if num%2==0 :
        s = "Even"
    else :
        s = "Odd"

    return s

배운점

  • 파이썬에도 삼항연산자가 있다는걸 배웠다.
  • a if test else b : test가 true일 경우 a를, 그렇지 않으면 b를 리턴한다.

풀이 (Java)

public class EvenOrOdd {
    String evenOrOdd(int num) {
        String result;
      	if(num % 2 == 1){
          result = "Odd";
        }else{
          result = "Even";
        }
        return result;
    }

    public static void main(String[] args) {
        String str = "1 2 3 4";
        EvenOrOdd evenOrOdd = new EvenOrOdd();
        //아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println("결과 : " + evenOrOdd.evenOrOdd(3));
        System.out.println("결과 : " + evenOrOdd.evenOrOdd(2));
    }
}

다른사람 풀이 (Java)

public class EvenOrOdd {
    String evenOrOdd(int num) {
        return (num % 2 == 0) ? "Even" : "Odd";
    }

    public static void main(String[] args) {
        EvenOrOdd evenOrOdd = new EvenOrOdd();
        //아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println("결과 : " + evenOrOdd.evenOrOdd(3));
        System.out.println("결과 : " + evenOrOdd.evenOrOdd(2));
    }
}

level 1. 제일 작은 수 제거하기

|

level 1. 제일 작은 수 제거하기

출처

문제

rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다. mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요. 예를들어 mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다.

풀이 (python)

# 풀이1
def rm_small(mylist):
    mylist.remove(min(mylist)) #min() - O(N) 시간복잡도
    return mylist


# 풀이2 - filter 사용
def rm_small(mylist):
    return list(filter(lambda x: x > min(mylist), mylist))


# 풀이3
def rm_samll(mylist):
    return [i for i in mylist if i > min(mylist)]

# 아래는 테스트로 출력해 보기 위한 코드입니다.
my_list = [4, 3, 2, 1]
print("결과 {} ".format(rm_small(my_list)))

배운점

  • min(), max() 함수를 이용하면 인수로 반복 가능(iterable)한 자료형을 입력받아 그 최소값, 최대값을 리턴한다.
  • iterable 의 의미는 member를 하나씩 차례로 반환 가능한 object를 말한다.
  • iterable 의 예로는 sequence type인 list, str, tuple,dic 이 대표적이다.