2024/10 31

[Python] 백준 16946 벽 부수고 이동하기 4

문제N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 변을 공유할 때, 인접하다고 한다.각각의 벽에 대해서 다음을 구해보려고 한다.벽을 부수고 이동할 수 있는 곳으로 변경한다.그 위치에서 이동할 수 있는 칸의 개수를 세어본다.한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.    난이도골드 2    코드import sysfrom collections import dequen, m = map(int,sys.stdin.readline().split())graph = []group_width = [0,0] # 그룹번호의 너비를 담는 리스트group_nu..

백준풀이 2024.10.10

[JAVA] 인터페이스 (Interfaces)

자바에서 인터페이스란?: 클래스가 구현해야 하는 메서드들의 집합을 정의하는 일종의 템플릿객체의 동작을 명시하는 역할을 한다.해당 인터페이스를 구현하는 클래스는 그 안에 선언된 모든 메서드를 반드시 구현해야 한다. 특징인터페이스 안에는 기본적으로 구현되지 않은 추상 메서드들이 정의된다. 메서드들은 선언만 되어  있고 실제 구현은 인터페이스를 구현하는 클래스에서 이루어진다.자바 클래스는 여러 인터페이스를 구현할 수 있다. 이를 통해 다형성을 높이고 클래스가 다양한 행동을 가질 수 있게 한다.인터페이스 안에 선언된 변수는 암묵적으로 public, static, final 로 간주되며 상수로 동작한다.인터페이스는 다른 인터페이스를 상속할 수 있으며 여러 인터페이스로부터 상속받아 새로운 인터페이스를 정의할 수 있..

JAVA/기초공부 2024.10.09

[Python] 백준 12015 가장 긴 증가하는 부분 수열 2

문제수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.https://www.acmicpc.net/problem/12015        난이도골드2    내 코드import sysdef binarySearch(value) : left = 0 right = len(lis) - 1 while left value : right = mid - 1 else : left = mid + 1 return leftn = int(sys..

백준풀이 2024.10.09

[JAVA] 추상 클래스

개요자바언어는 클래스들이 중심인 언어로서 문제 해결을 위한 클래스를 설계할 때 클래스의 사용과 구현을 분리하여 무엇을 해야 하는지에 중점을 두어 설계한다.슈퍼 클래스에서 행위에 해당하는 메소드를 나타내고 그 행위를 어떻게 하는지는 추상적으로 표현함으로써 무엇을 하는가를 알 수 있는 명세서를 제공한다.서브클래스에서 슈퍼 클래스의 메소드를 오버라이딩하여 실제 어떻게 해야하는지를 구현해야 한다.추상적으로 표현된 클래스는 인스턴스를 만들 수 없으며 실체가 없는 추상클래스가 된다.     추상 클래스 (Abstract  Class): 추상 메소드를 하나 이상 포함 하고 있는 클래스의 경우추상 메소드는 메소드의 선언 부분만을 가지고 있으므로 상속 받은 자식 클래스에서 반드시 구현을 필요로 하는 메소드이다.     ..

JAVA/기초공부 2024.10.09

[JAVA] 형 변환, static, final

클래스의 형 변환이란?: 객체가 다른 타입으로 변환되는 것업캐스팅과 다운캐스팅이 있다.    업캐스팅: 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 것업캐스팅은 암시적으로 이루어지기 때문에 명시적으로 변환할 필요가 없음🔸 업캐스팅을 하면 상위 클래스에 정의된 메서드들만 사용할 수 있고, 하위 클래스에 추가된 메서드는 사용할 수 없다.🔸 업캐스팅을 하면 객체는 실제로는 여전히 원래의 하위 클래스의 인스턴스이지만, 상위 클래스 타입으로 참조하게 된다. => 객체의 실제 타입이 바뀌는 것이 아니라 그 객체를 가리키는 참조 변수의 타입이 바뀌는 것    다운캐스팅: 상위 클래스 타입의 객체를 하위 클래스 타입으로 변환하는 것업캐스팅과 달리 명시적으로 변환을 해주어야 한다🔸 잘못된 다운캐스팅은 Cla..

JAVA/기초공부 2024.10.09

[JAVA] 접근 제한자

자바에서 접근 제한을 두는 이유캡슐화 개념을 구현하기 위해서캡슐화 : 객체 지향 프로그래밍의 중요한 원칙 중 하나로 객체의 내부 상태를 숨기고 외부에서는 제공된 메서드를 통해서만 접근할 수 있도록 제한하는 것. 코드를 더 안전하게 만들고 유지보수를 쉽게 할 수 있다.    클래스 접근 제한자1.  public 접근 제한자어느 패키지에서나 접근이 가능프로젝트 내의 모든 코드에서 해당 클래스를 사용할 수 있다. 2. default 접근 제한자접근 제한자를 명시하지 않으면 default 접근 제한자를 갖는다.같은 패키지 내에서만 접근이 가능하다. public 이 자주 사용되어 해당 클래스가 다른 패키지에서도 사용될 수 있도록 한다.하지만 내부적인 처리를 위한 클래스는 default로 설정하여 외부에서의 접근을..

JAVA/기초공부 2024.10.03

[Python] 백준 16562 친구비

문제19학번 이준석은 학생이 N명인 학교에 입학을 했다. 준석이는 입학을 맞아 모든 학생과 친구가 되고 싶어한다. 하지만 준석이는 평생 컴퓨터랑만 대화를 하며 살아왔기 때문에 사람과 말을 하는 법을 모른다. 그런 준석이에게도 희망이 있다. 바로 친구비다!학생 i에게 Ai만큼의 돈을 주면 그 학생은 1달간 친구가 되어준다! 준석이에게는 총 k원의 돈이 있고 그 돈을 이용해서 친구를 사귀기로 했다. 막상 친구를 사귀다 보면 돈이 부족해질 것 같다는 생각을 하게 되었다. 그래서 준석이는 “친구의 친구는 친구다”를 이용하기로 했다.준석이는 이제 모든 친구에게 돈을 주지 않아도 된다!위와 같은 논리를 사용했을 때, 가장 적은 비용으로 모든 사람과 친구가 되는 방법을 구하라.      난이도골드 4      내 코..

백준풀이 2024.10.02

[Python] 백준 10775 공항

문제오늘은 신승원의 생일이다.박승원은 생일을 맞아 신승원에게 인천국제공항을 선물로 줬다.공항에는 G개의 게이트가 있으며 각각은 1에서 G까지의 번호를 가지고 있다.공항에는 P개의 비행기가 순서대로 도착할 예정이며, 당신은 i번째 비행기를 1번부터 gi (1 ≤ gi ≤ G) 번째 게이트중 하나에 영구적으로 도킹하려 한다. 비행기가 어느 게이트에도 도킹할 수 없다면 공항이 폐쇄되고, 이후 어떤 비행기도 도착할 수 없다.신승원은 가장 많은 비행기를 공항에 도킹시켜서 박승원을 행복하게 하고 싶어한다. 승원이는 비행기를 최대 몇 대 도킹시킬 수 있는가?https://www.acmicpc.net/problem/10775     난이도골드 2     내 코드import sysdef find(x) : if pa..

백준풀이 2024.10.01

[JAVA] 메소드 오버라이딩

메소드 오버라이딩 ( Method Overridings ): 부모 클래스에서 정의된 메소드를 자식 클래스에서 재정의하여 사용하는 것오버라이딩은 다형성을 구현하는 중요한 방법 중 하나자식 클래스에서 부모 클래스의 메소드를 그대로 사용하는 대신 해당 메소드의 기능을 자식 클래스에 맞게 재정의하는 경우에 사용      오버라이딩과 오버로딩의 차이점오버로딩 : 같은 클래스 내에서 메소드 이름은 같지만 매개변수의 개수나 타입이 다른 여러 메소드를 정의하는 것오버라이딩 : 상속받은 메소드를 자식 클래스에서 재정의 하는 것      자바에서 오버라이딩이 존재하는 이유1.  다형성 구현다형성 : 같은 인터페이스나 상위 클래스의 메소드가 여러 형태로 동작할 수 있도록 하는 객체 지향 프로그래밍의 중요한 개념오버라이딩을 ..

JAVA/기초공부 2024.10.01

[Python] 백준 2616 소형기관차

문제기차는 맨 앞에 있는 기관차 1대가 손님이 탄 객차 여러 칸을 끌고 간다. 기관차가 고장나면 기차를 운행할 수 없게 되므로 최근 철도청은 기관차 고장에 대비하여 몇몇 역에 소형 기관차 3대를 배치하기로 결정하였다. 소형 기관차는 평소에 이용하는 기관차보다 훨씬 적은 수의 객차만을 끌 수 있다.기관차가 고장났을 때 끌고 가던 객차 모두를 소형 기관차 3대가 나누어 끌 수 없기 때문에, 소형 기관차들이 어떤 객차들을 끌고 가는 것이 좋을까하는 문제를 고민하다가 다음과 같이 하기로 결정하였다.소형 기관차가 최대로 끌 수 있는 객차의 수를 미리 정해 놓고, 그보다 많은 수의 객차를 절대로 끌게 하지 않는다. 3대의 소형 기관차가 최대로 끌 수 있는 객차의 수는 서로 같다.소형 기관차 3대를 이용하여 최대한 ..

백준풀이 2024.10.01