• 약수의 합
def solution(n):
    answer = 0
    for i in range(1,n+1):
        if n%i==0:
            answer+=i
        
    return answer

<남의 풀이: 람다식>

def sumDivisor(num):
    return sum(filter(lambda x: num % x == 0, range(1, num + 1)))

 

 

 

  • 문자열 내 p와 y의 개수
    def solution(s):
        answer = True
        p=0
        y=0
        for i in s:
            if(i=="p" or i == "P"):
                p+=1
            elif(i=="y" or i=="Y"):
                y+=1
        if(p!= y):
            answer =False
        return answer​

<남의 풀이 : 집계함수 > --모두 다 소문자로 바꾼다. 함수를 잘쓰자.

def solution(s):
    # 함수를 완성하세요
    return s.lower().count('p') == s.lower().count('y')

 

'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

 

 

 

  • 같은 숫자는 싫어
    def solution(arr):
        answer = [arr[0]]
        
        for i in range(1,len(arr)):
            if arr[i] !=arr[i-1]:
                answer.append(arr[i])
    
        return answer​

<다름사람풀이: [-1:] 슬라이싱>

def solution(s):
    a = []
    for i in s:
        if a[-1:] == [i]: continue
        a.append(i)
    return a

 

 

  • 가운데글자 가져오기
    def solution(s):
        return s[(len(s)-1)//2:len(s)//2+1]​

 

  • x만큼 간격이 있는 n개의 숫자
    def solution(x, n):
        answer = []
        for i in range(1,n+1):
            answer.append(x*i)
        return answer​
    def solution(x, n):
        # 함수를 완성하세요
        return [i * x + x for i in range(n)]​
def solution(x, n):
    # 함수를 완성하세요
    return [i for i in range(x, x*n+1, x)]

'코드테스트' 카테고리의 다른 글

코딩테스트 lv.1 - 파이썬  (0) 2021.06.18
5.해쉬함수  (0) 2021.06.18
4.진법변환/비트연산  (0) 2021.06.17
3. 깊이우선탐색/ 너비탐색  (0) 2021.06.02
2.완전탐색/ 이분탐색  (0) 2021.05.30

0. oop의 3대특징

다형성, 상속, 캡슐화

 

 

1.생성자(constructor)

-메소드명=클래스명

-리턴자료형이 정의

new 클래스명(입력항목,,,);

 

 

public class HouseDog extends Dog {
    public HouseDog(String name) {
        this.setName(name);
    } 

    public static void main(String[] args) {
        HouseDog dog = new HouseDog("happy");
        System.out.println(dog.name);
    }
}

출력>> happy

 

 

:입력항목이 다른 생성자 여러개 생성자(overloading)이라고 한다. 

public static void main(String[] args) {
        HouseDog happy = new HouseDog("happy"); //클래스명 HouseDog을 받았다. 생성자 (string) 
        HouseDog yorkshire = new HouseDog(1); //클래스명 HouseDong 생성자(int)

 

 

 

:메소드 오버로딩( feed라는 메소드에서 입력값 자료형타입 다름)

public class ZooKeeper {
    public void feed(Tiger tiger) {
        System.out.println("feed apple");
    }

    public void feed(Lion lion) {
        System.out.println("feed banana");
    }

    public static void main(String[] args) {
        ZooKeeper zooKeeper = new ZooKeeper();
        Tiger tiger = new Tiger();
        Lion lion = new Lion();
        zooKeeper.feed(tiger);
        zooKeeper.feed(lion);
    }
}

 

인터페이스: implements라는 키워드 사용. 반복이 귀찮을때 사용.

 

 

 

 

 

출처:https://wikidocs.net/281

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

docker

1.static vs non static

static 어느 클래스에서도 접근가능하고, 같은 변수를 공유 : 여러번 호출시 값이 누적되어 변경

non-static: 이름이 같더라도 별개의 변수: 여러번 호출시에도 처음 그대로

 

 

2.접근제한자

public:

protected : 다른 패키지 같은 클래스 상속 

default:  같은 패키지 내에서만

private:  같은 클래스내에서만 

 

 

3.상속

A extends B: A클래스는 B클래스를 상속한다. A(자식)이 사용할 수 있는 범위가 넓다

 

Vehicle.java : Vehicle 클래스에는 name 객체변수가 있다. SetName 메소드에는 입력o 출력x(프린트x) 

package com.test04;

public class Vehicle {
	String name;

	public void SetName(String name) {
		this.name = name;
	}

}

Car.java  //웬만하면 클래스이름은 대문자로 하기!! 객체들랑 헷갈려,,

package com.test04;

public class Car extends Vehicle{ //자식클래스 extends 부모클래스
	

}

 

Car라는 클래스가 Vehicle을 상속받음

public class Car extends Vehicle { // 자식클래스 extends 부모클래스
	public static void main(String[] args) {
		Car car = new Car();
		car.SetName("BMW");  //객체.메소드(인수)
		System.out.println(car.name); //print(객체.객체변수)

	}

}

출력값 : BMW

 

public class Car extends Vehicle { // 자식클래스 extends 부모클래스

	public void Drive() { // Drive 메소드 입력x 출력x(프린트만 한다)
		System.out.println(this.name + " vroom vromm-");
	}

	public static void main(String[] args) { // main 메소드
		Car car = new Car();
		car.SetName("BMW");
		System.out.println(car.name); // Vehicle메소드는 프린트함수가 없음
		car.Drive(); // 객체.메소드

	}

}

출력값:

BMW

BMW vroom vroom-

 

Vehicle car=new Car(); //Car의 새로운 객체는, Vehicle 자료형이다.

 

반대는 안된다. Vehicle> Car 이므로, =new 자식클래스가 오른쪽에 위치한것만 가능

 

 

기본적으로 모든 클래스는 Object 클래스를 상속받고 있다.

그래서 아래와 같은 형태도 가능하다.

Object vehicle=new Vehicle();
Object car=new Car();

 

 

4.메소드 오버라이딩

public class Deutsch extends Car { // Vehicle> Car> Deutsch순서로 상속
	public static void main(String[] args) {
		Deutsch deutsch = new Deutsch();
		deutsch.SetName("E_CLASS");// Vehicle의 SetName 메소드
		deutsch.Drive();
	}

}

출력값: E_CLASS vroom vroom-

 

public class Deutsch extends Car { // Vehicle> Car> Deutsch 순서로 상속
	public void Drive() { //Car의 Drive 메소드와 같음
		System.out.println(this.name+" vroom vroom- in Deutsch");
		
	}
	
	public static void main(String[] args) {
		Deutsch deutsch = new Deutsch();
		deutsch.SetName("E_CLASS");// Vehicle의 SetName 메소드
		deutsch.Drive();
	}

}

E_CLASS vroom vroom- in Deutsch

자식클래스의 메소드가 더 높은순위를 가진다. 부모클래스의 메소드를 덮어쓴다. 

 

5.메소드 오버로딩( 변경x 추가o )

같은 클래스에 입력값만추가(자료형 변수);

 

6.다중상속

자바는 다중상속 지원안해.

class C extends A, B { //이런게 안 된단 소리
    public void static main(String[] args) {

 

 

출처:https://wikidocs.net/280

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

'자바' 카테고리의 다른 글

자바3. 생성자, 인터페이스  (0) 2021.06.28
자바1. 자료형, equals vs ==, 클래스, 메소드  (0) 2021.06.26

+ Recent posts