분류 전체보기124 [백준] 7576번 토마토 (JAVA) https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 이해 해결 방법 구현 코드 문제 이해 기본적으로 BFS를 이용한 위, 아래, 좌, 우를 0이면 1로 바꾸는 Flood fill 문제인 것은 알 수 있었다. 이 문제는 BFS의 기본 문제들과는 다르게 Flood fill의 시작 위치가 여러 개인 점이 기본 문제와는 달랐다. Queue의 특성상 시작 토마토의 위치들인 1인 지점들을 bfs 함수를 실행 하기 이전에 전부 미리 넣어준.. 2022. 3. 18. [백준] 2447번 별찍기 - 10 (JAVA) https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 이해 해결 방법 코드 구현 문제 이해 금방 해결할 수 있을 줄 알았는데 생각보다 시간이 걸린 문제다. 일단 문제 자체에서 재귀적인 패턴으로 해결하라고 명시되어있다. 아마 명시되어있지 않더라도 문제를 읽어보면서 3^n이 입력으로 들어오는 조건이 있을 때 입력/3으로 나누어지니 재귀를 파악할 순 있다. 예를 들어 입력이 27이라면 별이 그려지는 부분이 27 -> 9 -.. 2022. 3. 18. [JAVA] 자바 오버로딩 (Overloading) [JAVA] 자바 오버 로딩 (Overloading) 하나의 클래스 안에서 여러 개의 같은 이름의 메서드를 여러 개 정의하는 것을 오버 로딩이라고 합니다. 이름이 같은 함수가 여러 개의 인자를 갖고 있는 것처럼 보여서 과적되었다고 표현하는 것입니다. 오버 로딩은 조건이 필요한데, 3가지를 기억하시면 됩니다. 메서드의 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입이 다른 것은 오버 로딩에 영향을 미치지 않는다. 결국 오버 로딩이란 메서드들의 이름은 같지만, 매개변수의 개수 또는 타입이 달라질 때 사용하는 것입니다. 주의해야 할 점은 반환 타입이 다르다고 할지라도 이름과 매개변수가 같으면 같은 함수로 인식된다는 점입니다. 반환 타입은 오버 로딩에 영향을 주지 않습니다. 반환 타입.. 2022. 3. 18. [백준] 15649번 N과 M (1) (JAVA) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 이해 해결 방법 구현 문제 이해 먼저 N, M 두 숫자를 입력받는다. N은 1부터 N까지를 의미한다. M은 출력 자릿수를 결정한다. 이 문제 N과 M (1)은 M 자릿수를 출력하며 1부터 N까지 중복 없이 출력하는 경우이다. 이 문제의 출력은 결국 순열을 의미한다. N과 M 문제 시리즈 같은 경우는 순열, 중복순열, 조합, 중복 조합 등을 백트래킹을 이용해서 구현하는 방법을 훈련할 수 있다.. 2022. 3. 18. [JAVA] 자바 BufferedReader 사용법 [JAVA] 자바 BufferedReader 사용법 자바에서 입력을 받을 때 Scanner 클래스로 입력을 받아왔었다. BufferedReader가 사용하기 불편해서 Scanner가 등장한 걸로 알고 있지만 백준 문제를 풀다 보면 Scanner를 사용했을 때 입력 자체에서 시간 초과가 걸리는 경우가 많아서 BufferedReader를 다시 사용하게 되었다. Scanner는 내부적으로 정규 표현식이 너무 많이 적용되어있어서 parse 할 때는 편리하지만, 성능이 희생당한다. 추가로 출력을 해주는 BufferedWriter도 있지만, 출력을 할 때 StringBuilder에 담아서 출력만 해도 출력 시간 초과는 해결된다. 이 글에서는 BufferedReader만 간단하게 사용하는 법을 정리하기로 했다. Bu.. 2022. 3. 17. [JAVA] 자바 Iterator와 ListIterator 사용법 [JAVA] 자바 Iterator와 ListIterator 사용법 자바에서는 Collection 인터페이스를 구현한 자료구조인 ArrayList, LinkedList, HashSet, TreeSet 등의 요소를 하나씩 반복하여 모든 요소를 확인할 수 있는 Iterator (단방향)와 ListIterator(양방향)가 있습니다. Iterator 구현도 인터페이스가 추상메서드를 갖고 있다면 해당 인터페이스를 구현하는 클래스는 모두 해당 메서드의 구현부를 작성해야 합니다. Iterator는 iterator()라는 함수명을 갖고 있는 추상 메서드가 반환을 합니다. iterator() 추상 메서드의 위치는 Iterable이라는 인터페이스에서 작성을 해뒀습니다. 결국 Iterable을 구현한 모든 클래스는 iter.. 2022. 3. 16. 이전 1 ··· 15 16 17 18 19 20 21 다음