본문 바로가기

전체 글

(263)
06 객체지향 프로그래밍 1 요약 ○ 객체지향언어의 주요특징 1. 코드의 재사용성이 높음 2. 코드의 관리가 용이함 3. 신뢰성이 높은 프로그래밍을 가능케함 ○ 클래스의 정의 : 클래스는 객체를 정의해 놓은 것. 데이터와 함수의 결합. ○ 클래스의 용도 : 클래스를 사용하는 데 사용되는 설계도 ○ 인스턴스화 : 클래스로부터 객체를 만드는 과정 ○ 객체의 구성 요소 1. 속성(멤버변수) 2. 기능(메서드) ○ 인스턴스의 생성과 사용 클래스명 변수명; 변수명 = new 클래스명(); Tv t; // Tv 클래스의 객체의 주소를 저장할 참조변수 t 선언 t = new Tv(); // Tv클래스의 객체를 생성해 그 주소를 t에 저장 인스턴스는 참조변수를 통해서만 다룰 수 있고, 참조변수 타입은 인스턴스 타입과 일치해야 함 ○ 객체의 배열 = 참..
[백준] 1100 : 하얀 칸 JAVA 풀이 8x8인 체스판에서 흰색인 칸은 (0,0) (0,2) (0,4) (0,6) (1,1) (1,3) (1,5) (1,7) 등... 행 값을 i 열 값을 j라고 했을 때 i+j가 짝수인 경우이다. 따라서 체스판의 값을 입력받은 뒤에 i+j가 짝수이고, 그 자리에 'F'가 저장돼있다면 카운트를 증가시켜줬다. import java.io.*; import java.util.*; class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = new String[8]; for(int i=0;i
[백준] 1259 : 팰린드롬수 JAVA 풀이 단어를 앞에서부터 읽으나 뒤에서부터 읽으나 같을 때 팰린드롬이라고 한다. 그래서 문자열을 입력받았을 때 그 문자열을 뒤집고, 그것이 원본과 일치한다면 yes를 그렇지 않다면 no를 출력하도록 했다. import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true) { String str = br.readLine(); if(str.equals("0")) { break; } StringBuffer sb = new StringB..
[백준] 1764 : 듣보잡 JAVA 풀이 듣도 못한 사람의 명단과 보도 못한 사람의 명단이 주어질 때 '듣도 보도' 못한 명단을 구해야 한다. 듣도 못한 사람을 ArrayList에 저장한 뒤, ArrayList.contains()로 보도 못한 사람이 포함된 경우에만 새로운 ArrayList에 저장하고 출력하려고 했지만 시간초과가 나왔다. System.out.print를 너무 많이 호출해서인가하고 StringBuilder로 바꿔봐도 결과는 시간초과였다. 검색해보니 ArrayList.contains()는 O(n)이 걸리는 게 문제였던 것 같다. HashSet의 contains() 메소드는 O(1)이 걸린다고 해서 듣도 못한 사람을 HashSet에 저장하고 그중에서 보도 못한 사람이 있는지 검사하는 방식으로 바꿨다. 1. N과 M을 입력받는다. 2...
[백준] 10808 : 알파벳 개수 JAVA 알파벳 개수만큼의 int 배열을 만들고 문자열을 입력받은 뒤 문자열 한글자씩 검사하면서 배열에 카운트해주면 된다. import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int[] cnt = new int[26]; for(int i=0;i
[백준] 1541 : 잃어버린 괄호 JAVA 풀이 예를 들어 10 - 20 + 30 이라는 식이 주어졌을 때 (10 - 20) + 30을 계산하면 20이 나오고 10 - (20 + 30)을 계산하면 -40이 나온다. 이처럼 괄호의 위치에 따라 결과값이 달라질 때 최소값이 되도록 하라는 건데, +를 사이에 두고 있는 수들(20, 30)을 먼저 더한 후에 -의 앞에 있는 수들에서 빼주면 된다. 그러려면 우선 식을 -를 기준으로 쪼개줘야 하는데, split() 메서드를 사용하면 된다. 이 예시의 경우 10과 20+30로 나뉘고, 20 + 30을 다시 +를 기준으로 쪼개서 20과 30을 더해 50을 만들고 그걸 10에서 빼주면 된다. +를 기준으로 식을 쪼갤 때 주의해야 할 점은 str.split("+")라고 쓰면 오류가 나므로 str.split("\\+")라..
[Java] 배열을 복사하는 방법 : System.arraycopy() 배열을 복사하는 방법은 clone()도 있지만 clone()은 배열 전체를 복제하는 것이라, 배열의 일부분만 복사할 수 있는 System.arraycopy()의 사용법도 알아두면 좋다. System.arraycopy(src, srcPos, dest, destPos, length); // src : 원본 배열 // srcPos : 원본 배열의 시작위치 // dest : 복사할 배열 // destPos : 복사할 배열의 시작위치 // length : 복사할 데이터 개수 import java.util.*; public class CloneEx2 { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] arrClone = new int[..
[백준] 12101 : 1, 2, 3 더하기 2 JAVA 풀이 1, 2, 3을 더해서 N을 만들 수 있는 경우의 수는 1, 2, 3으로 N-1, N-2, N-3을 만들 수 있는 경우의 수를 더하는 것으로 구할 수 있다. 예를 들어 5를 만들려면 4, 3, 2에 각각 1, 2, 3을 더하면 5를 만들 수 있다. 그러니 4, 3, 2를 만드는 경우의 수를 각각 구하면 되는 것이다. 이번 문제는 N을 1, 2, 3의 합으로 나타낸 식 중 원하는 식을 출력하는 것이다. 그러기 위해서는 1부터 N까지 각자의 수를 1, 2, 3의 합으로 표현한 식이 필요하다. 하지만 숫자에 따라서 그 식의 개수는 달라지기 때문에 ArrayList를 사용했다. String형의 ArrayList 배열을 만들고, 각각의 ArrayList에는 1, 2, 3으로 그 수를 나타내는 식을 저장하는 방식이..