일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BOJ
- Python
- programmers
- Codeforces Round #802 (Div. 2)
- 이론
- 헤드퍼스트 디자인패턴
- Java11
- baekjoon
- 기초100제
- 자바
- 응용
- 공공데이터
- 코딩테스트
- 기본
- HAVING 절
- Codeup
- 명품 자바 프로그래밍
- 기초
- SQLD / SQLP
- 백준
- pypy3
- Python 3
- level1
- 단계별로 풀어보기
- 개념
- 파이썬
- JAVA 11
- java
- SELECT 절
- GROUP BY 절
- Today
- Total
목록java (20)
Development Project
문제 링크 : https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 소요 시간 : 1시간 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 1024MB 문제 NxN의 격자(3≤N≤20), 학생의 번호 ni(1≤ni≤N*N) 각 학생마다 좋아하는(인접하길 바라는) 학생이 4명씩 있다. 자리를 배치할때, 1. 좋아하는 학생이 많이 인접하도록 2. 좋아하는 학생이 같은수로 인접한 곳이 여러개라면, 인접한 칸중 빈곳이 많도록 3. 빈곳도 마찬가..
문제 링크 : https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 소요 시간 : 1시간 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 512MB 문제 입력값 N(0≤N≤1,000,000) 이해 모든 자릿수가 기준으로 앞의 수보다 뒤의 수가 다 작다면 감소하는 수라고 정의한다. 이때 N번째 감소하는 수를 구하라는 문제이다. 문제 이해는 어렵지 않아보이지만, 감소하는 수가 제한이 생길수 밖에 없다는 것 정도는 분석해야할듯싶다. 한자..
문제 링크 : https://www.acmicpc.net/problem/2310 2310번: 어드벤처 게임 입력은 여러 개의 미로로 주어진다. 각 미로의 첫 줄에는 미로의 방 수를 나타내는 정수 n(1 ≤ n ≤ 1000)이 주어진다. 다음 n 줄에는 각 방의 정보가 주어진다. 각 방의 정보는 방의 내용물을 나타 www.acmicpc.net 소요 시간 : 40분 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 128MB 문제 방의 개수 N개(1≤N≤1,000), 방별 비용(0≤N≤500), 방의 유형은 빈방, 레프리콘방, 트롤방임 1번방에서 N번방으로 갈 수 있는지 여부를 출력하는 문제이고, 방의 경우에 따라 갈수있는지 불가능한지 정해진다 빈방은 변화가 없고, 레프리콘방은 일정금액 이하일경우 돈을 일..
문제 링크 : https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 소요 시간 : 4시간.....ㅎㅎㅎㅎㅎㅎ 문제를 읽고 이해하기 제한 시간 : 2초 메모리 : 128MB 문제 노드의 개수 N개(1≤N≤10,000), 간선의 개수 N-1개 트리의 끝부분(리프노드)를 잡고 쫙 폈을때 가장 긴 길이를 구하는 문제 이해 문제 이해는 어렵지 않았는데, 문제에서 예시로 준 그림이 왜 45가 되는지 분석하지않고 문제에 바로 접근해서 많이 삽..
문제 링크 : https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 소요 시간 : 1시간 30분 문제를 읽고 이해하기 제한 시간 : 2초 메모리 : 512MB 문제 NxN 면적의 땅(1≤N≤50), 땅은 1x1개의 칸으로 나뉘어짐 각 땅(1x1)에는 나라가 하나씩 존재하고 A[r][c]명이 살고있음 인구이동이 불가할때까지 밑의 일들이 반복해서 일어남 국경선을 공유하는 두 나라의 인구차이가 L이상 R이하인 모든곳의 국경선을 하루간 연다 ..
문제 링크 : https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 소요 시간 : 1시간 문제를 읽고 이해하기 제한 시간 : 2초 메모리 : 128MB 문제 N개의 막대기둥(1≤N≤1,000), 기둥의 왼쪽면의 위치(1≤L≤1,000), 기둥 높이(1≤H≤1,000) 지붕이 기둥을 전부 감싸면서, 중간에 오목하게 들어간 부분없이 딱 맞게 설계할때 창고의 면적을 구하는 문제 이해 문제가 자세하게 설명되어 있어 크게 이해가 어렵진 않았다..
문제 링크 : https://www.acmicpc.net/problem/2610 2610번: 회의준비 첫째 중에 회의에 참석하는 사람의 수 N이 주어진다. 참석자들은 1부터 N까지의 자연수로 표현되며 회의에 참석하는 인원은 100 이하이다. 둘째 줄에는 서로 알고 있는 관계의 수 M이 주어진다. 이 www.acmicpc.net 소요 시간 : 2시간 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 128MB 문제 회의에 참석하는 사람의 수(1≤N≤100), 서로 알고있는 관계의 수 M (관계이니까 최대 N-1개임) 서로 알고있는 사람은 같은위원회에 속해야하고, 위원회의 수는 최대가 되어야함 위원회마다 대표가 한명씩 있는데 각 위원회 회원들이 대표에게 의견전달이 가장 효율적으로 될수있도록 대표를 선정하는..
문제 링크 : https://www.acmicpc.net/problem/16724 16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net 소요 시간 : 3시간 (Union-Find 문제가 오랜만이라 구현에 시간을 많이 쏟았다..ㅜ 어려워어려워) 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 256MB 문제 지도의 행(1≤N≤1,000), 지도의 열(1≤M≤1,000) 영과일(?) 회원들이 지도의 각 방향에 따라 이동할때 모두가 SAFE ZONE에 들어갈 수 있게하는 SAFE Z..
문제 링크 : https://www.acmicpc.net/problem/1208 1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 소요 시간 : 1시간 40분 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 256MB 문제 N개의 정수(1≤N≤40), 더해서 얻고싶은 값 S(|S|≤1,000,000), N개의 크기를 가지는 수열 N개의 수열에서 얻을 수 있는 부분수열들 중 합이 S가 되는 경우의 수를 출력하는문제 이해 처음에 문제를 잘못 이해해서, 누적합+포인터로 구하..
문제 링크 : https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 소요 시간 : 1시간 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 512MB 문제 테스트 케이스 수 T개(T>0), 건물개수 N(2 BFS의 절차는 크게 아래와 같이 6가지로 볼 수 있다 위 각 수행문에 대해 어떤일이 있을 때 분기처리를 해줘야하는지 분석해보겠다. 큐에서 꺼내옴 목적지인가 - 위 문제에서는 필요없다 연결된 곳을 순회 해당 건물번호에 연결된 건물들은 인접리..
문제 링크 : https://www.acmicpc.net/problem/17359 17359번: 전구 길만 걷자 선린 친구들은 ✨인기스타 슈퍼인싸 예원쌤✨을 존경한다. 방학 동안 선생님을 뵐 수 없다니! 그래서 학생들은 방학식 날 💡전구 길만 걷자💡라는 엄청난 이벤트를 준비했다. 💡💡💡💡 www.acmicpc.net 소요 시간 : 2시간 30분 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 512MB 문제 전구 묶음 개수 N(1≤N≤10) 켜진 전구 : 1, 꺼진 전구 : 0 인 문자열로 입력을 줌 1->0, 0->1 이런 상태변화가 없을수록 좋은 배치 전구를 묶음(묶음은 순서변화 X)을 나열했을 때, 상태변화의 최소 횟수 출력하라는 문제 이해 전구 묶음안에서는 순서를 바꾸지 못하므로, 한 문자열(..
문제 링크 : https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 소요 시간 : 1시간 문제를 읽고 이해하기 제한 시간 : 2초 메모리 : 32MB 문제 정수 N을 연속된 숫자의 합으로 나타낼 수 있는 경우의 수를 출력하는 문제 이해 15라는 숫자가 N에 입력되었다면, 15와 7+8, 4+5+6, 1+2+3+4+5 즉, 4가지 방식으로 나타낼 수 있으므로 답은 4가 된다. 문제를 익숙한 용어로 재정의와 추상화 입출력 예제에 있..
문제 링크 : https://www.acmicpc.net/problem/23810 23810번: 골뱅이 찍기 - 뒤집힌 ㅋ 서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다. 상자 안에는 뒤집힌 ㅋ자 모양의 골뱅이가 들어있다. 뒤집힌 ㅋ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다. www.acmicpc.net 소요 시간 : 7분 정답 코드 import java.io.*; import java.util.*; public class Main{ static int N; static String[] f = {"@@@@@","@","@@@@@","@","@"}; static StringBuilder sb = new StringBuilder(); public static void ma..
문제 링크 :https://www.acmicpc.net/problem/2153 2153번: 소수 단어 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 www.acmicpc.net 소요시간 : 30분 정답코드 import java.util.*; import java.io.*; public class Main{ static String input; static int num=0; static boolean[] isNotPrime; // 52*20 = 1040 public static void main(String[] args) throws ..
문제 링크 : https://www.acmicpc.net/problem/16439 16439번: 치킨치킨치킨 첫 번째 줄에 고리 회원의 수 N (1 ≤ N ≤ 30) 과 치킨 종류의 수 M (3 ≤ M ≤ 30) 이 주어집니다. 두 번째 줄부터 N개의 줄에 각 회원의 치킨 선호도가 주어집니다. i+1번째 줄에는 i번째 회원의 선 www.acmicpc.net 소요 시간 : 2시간 5분 문제를 읽고 이해하기 제한 시간 : 1초 메모리 : 128MB 문제 N명(1≤N≤30)의 회원, 치킨의 종류는 M개(3≤M≤30) 회원마다 특정 치킨의 선호도(ai,1, ai,2, ..., ai,M (1 ≤ ai,j ≤ 9)) 존재 회원의 만족도는 주문한 치킨의 가장 큰 선호도값 목적 : 최대 3가지 종류의 치킨을 시킬때, ..
패키지(Package) 패키지의 필요성 - 비슷한 성격의 클래스들끼리 묶을 수 있어 클래스의 분류가 용이 - 다른 사람이 작성한 자바 클래스나 라이브러리를 사용해야 할 때 클래스명이 동일한 경우도 발생할 수 있음 - 하지만 패키지명이 다르면 클래스명이 동일해도 충돌없이 사용 가능 ( 경로명이 달라지기 때문 ) 패키지의 개념 - 서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉토리에 묶은 것 import와 클래스 경로 패키지에 작성된 클래스를 사용하는 방법 import를 이용할 때 public class ImportExample { public static void main(String[] args) { java.util.Scanner scanner = new java.util.Sc..
상속 - 부모클래스(상위클래스)에 만들어진 필드, 메소드를 자식클래스(하위클래스)가 물려받음 장점 클래스의 간결화 - 멤버의 중복 작성 불필요 클래스 관리 용이 - 클래스들의 계층적 분류 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이 - 새로운 클래스의 작성 속도 빠름 클래스 상속과 객체 클래스 상속 public class Person { ... } // Person을 상속받는 클래스 Student 선언 public class Student extends Person { ... } // Student를 상속받는 StudentWorker 선언 public class StudentWorker extends Student { ... } - 부모클래스(슈퍼클래스) - 자식클래스(서브클래스) == 슈퍼..
객체 지향과 자바 객체 (Object, Instance) 개념 - 현실 세계의 사물이나 개념을 시스템에서 이용하기 위해 현실 세계를 자연스럽게 표현하여 손쉽게 이용할 수 있도록 만든 소프트웨어 모델 - 클래스의 모양 그대로 찍어낸 것으로, 프로그램 실행중에 생성되어 메모리 공간을 갖는 구체적인 실체 - 객체 = 속성(attributes, properties) + 행동(messages, behaviors) 속성 - 객체의 특성을 표현하는 정적인 성질 - 프로그래밍에서 속성은 필드라 함 행동 (메소드 method) - 객체 내부의 일을 처리 - 객체들간의 서로 영향을 주고 받는 동적인 일을 처리하는 단위 객체 생성 (new 키워드) Circle pizza = new Circle(); 객체 지향의 특성 상속..
반복문 for문 기본형태 for(초기작업; 조건식; 반복 후 작업){ // 초기문이 반복후 작업을 했을 때 조건식을 만족하지 않을 때까지 반복 } - 초기문에 변수 선언, 여러변수를 초기화 가능 특이한 형태 // 반복조건이 true이면 무한반복 for(초기작업; true; 반복후작업){ } // 반복조건이 비어있으면 true로 간주, 무한반복 for(초기작업; true; 반복후작업){ } // 초기 작업과 반복후작업은 ','로 분리하여 여러 문장 나열 가능 for(int i=0; i main메소드는 - public : 다른 클래스에서 메소드 접근이 가능하고 - static : 객체 생성 전부터 호출이 가능하며 - String[] args : 문자열 배열 형식의 매개변수를 인자로 받고 [ cmd창이나 이클..
자바 프로그램의 구조 /* * 예시 소스 파일 : 클래스이름1.java */ // 클래스 선언 접근제한자 class 클래스이름1{ // 메소드이름1 메소드 선언 접근제한자 리턴자료형1 메소드이름1(자료형 변수이름, ...){ return 리턴값; } // main() 메소드 선언, String[] args로 실행 인자를 전달 받음 접근제한자 리턴자료형 main(String[] args){ 자료형1 변수명1; 자료형 변수명2 = 대입할값; // 메소드이름1 메소드 호출 변수명1 = 메소드이름1(매개변수, ...); //화면 출력 : 표준 출력 스트림에 의해 메시지 출력 System.out.println(변수명1); } } 식별자 클래스, 변수, 상수, 메소드 등에 붙이는 이름 식별자 규칙 - ‘@’, ‘#..