목록분류 전체보기 (131)
자바칩
난이도: Silver 1문제: https://www.acmicpc.net/problem/1743 문제코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다. 통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다. 선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자..
난이도: Silver 1문제: https://www.acmicpc.net/problem/1926 문제어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 ..
난이도: Silver 1문제: https://www.acmicpc.net/problem/2583 문제에 주어진 모눈종이는 세로가 M, 가로가 N이지만코드를 작성할 때는 가로가 M, 세로를 N으로 배열을 초기화하자. => new int[N][M] 2차원 배열 초기화 방법:for (i: 왼쪽 아래 꼭짓점의 x좌표 ~ 오른쪽 아래 꼭짓점의 x좌표 - 1까지) for (j: 왼쪽 아래 꼭짓점의 y좌표 ~ 오른쪽 아래 꼭짓점의 y좌표 -1까지) paper[i][j] = 1; 그 이후는 BFS 알고리즘을 잘 알면 쉽게 풀 수 있다.영역을 체크할 때는 영역 체크 변수 cnt를 2로 초기화해서 새로운 칸에 방문할 때마다 cnt를 1씩 증가시키면 된다.그리고 마지막에 방문한 x좌표와 y좌표의 영역 크..
디자인 패턴역할어댑터 패턴 (Adapter Pattern)호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴 프록시 패턴 (Proxy Pattern) 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 데코레이터 패턴 (Decorator Pattern) 메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴 싱글톤 패턴 (Singleton Pattern) 클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴 템플릿 메서드 패턴 (Template Method Pattern) 상위 클래스의 견본(템플릿) 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴 팩토리 메서드 패턴 (Factory Method Pattern) 오버라..
단일 책임 원칙(SRP: Single Responsibility Principle)정의: 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.설명: 클래스는 하나의 기능 또는 역할만을 가져야 하며, 그 기능을 변경하는 이유는 하나뿐이어야 한다. 이를 통해 클래스의 복잡성을 줄이고, 코드의 가독성과 유지보수성을 높일 수 있다.예시: 사용자의 정보를 관리하는 User 클래스와 사용자 인터페이스를 처리하는 UserInterface 클래스를 분리하여 각각의 책임을 명확히 한다.개방-폐쇄 원칙 (OCP: Open-Closed Principle)정의: 자신의 확장에는 열려있고, 주변의 변화에 대해서는 닫혀 있어야 한다.설명: 새로운 기능을 추가할 때 기존 코드를 변경하지 않고 확장할 수 있어야 한다. 이를 ..
캡슐화 (Encapsulation): 정보 은닉정의: 데이터(속성)와 그 데이터(속성)를 조작하는 메서드를 하나의 객체로 묶는 것설명: 객체 내부의 데이터(속성)와 메서드를 외부에서 직접 접근하지 못하도록 하고, 객체를 통해서만 접근할 수 있도록 제한한다. 이를 통해 데이터의 무결성을 유지하고, 객체 간의 상호작용을 명확하게 정의할 수 있다.예시: 클래스 내의 private 속성은 외부에서 직접 접근할 수 없고, public 메서드를 통해서만 접근 가능하다.상속 (Inheritance): 재사용 + 확장정의: 하나의 클래스가 다른 클래스의 특성과 기능을 물려받는 것설명: 기존 클래스를 재사용하여 새로운 클래스를 만들 수 있게 한다. 상속을 통해 코드의 재사용성을 높이고, 공통적인 기능을 부모 클래스에서 ..
난이도: Gold 4문제: https://www.acmicpc.net/problem/13913 아래 링크에 있는 문제를 응용한 문제이다.이 문제를 먼저 풀어보고 해당 문제를 풀면 좀 더 쉽게 풀 수 있을 것이다.https://www.acmicpc.net/problem/1697 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간..
난이도: Gold 4문제: https://www.acmicpc.net/problem/14002 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 아래 링크에 있는 문제를 응용한 문제이다.이 문제를 먼저 풀어보고 해당 문제를 풀면 좀 더 쉽게 풀 수 있을 것이다.https://www.acmicpc.net/problem/11053 위 링크에 있는 문제에서 가장 긴 증가하는 부분 수열의 길이를 구하려면 int 타입의 1차원 dp 배열을 만들어서 저장하고, 가장 큰 값을 출력하면 됐었다.하지만 ..