반응형

Java 79

[Java-Algorithm] 백준 3085 사탕게임 풀이

문제 : https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 풀이 : 브루트 포스 문제이다. 결국 모든 경우의 수를 다 체크해야된다는건데.... for문의 집합체인것 같다.. 경우의수를 모두 체크해주면된다. 1). 오른쪽 왼쪽을 바꿨을때 => 가로 2). 위아래를 바꿨을때 => 세로 대각선은 제외하고 두가지만 체크해서 먹을 수 있는 갯수를 확인한다. static int result; static char[][] arr; public static void main(String[] args) throws NumberFormatException, IOException {..

[Java-Algorithm] 백준 17298 오큰수 풀이

문제 : https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 풀이 : 처음에 보자마자 아 for문 많이 돌려서 찾으면 금방하겠다 였다... 아직도 문제푸는데에 좋은 방법을 생각해 내지 못하나보다 했다~ ㅜ 문제 밑에 보면 어떤 문제인지 힌트 처럼 볼수 있는것이 있는데, 스택이 적혀있던것..! 어떻게 스택을 사용해서 풀수 있나 엄청 고민했다 ... 결국 나온풀이는. 현재 값을 기준으로 전에있던 값들을 비교하여 뒤에서 앞(키포인트)을 비교하는 방법으로 생각했다. 그..

[Java-Alogrithm] 백준 17413 단어 뒤집기 2 풀이

문제 : https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 : 처음엔 어떻게 해야되지 고민했다. 하나하나 스택과 Queue를 같이 이용해서 날려야되나 했는데 오히려 간단하게 풀릴것같아 스택 하나로만 해결했다. 관건은 ""이거로 거꾸로 Flag를 잡아주는것..!!!!! public static void main(String[] args) throws IOException { Scanner sc = new Sca..

[Java-Algorithm] 백준1406 에디터 풀이

문제 : https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 풀이 : 와... 사실 나는 cursor를 따로 만들어 위치를 변경시키면서 진행되는 코드를 짰었다... 다른 사람이 짠 코드에 놀라서 그 코드로 정리해놓으려고 한다. 대단하다 이런생각을...ㅠㅠ Stack을 왼쪽 오른쪽 두가지로 나누어 커서의 위치를 만들어내었다... 이 아이디어로만으로도 코드 구현은 가능하니까..! 여기까지만 설명...! public static void main(Stri..

[Java-Algorithm] 백준 1874 스택 수열 풀이

문제 : https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 : 처음에는 문제 이해가 되지 않았다... 무슨 말인지 ㅎㅎ; 쉽게 말해 Stack에 들어가는 입력정수들은 1씩 증가하고, push와 pop을 통해 1씩 증가하는 값이 담겨있는 Stack을 활용하여 입력받은 값을 만들수 있느냐는 문제였다. 문제 이해만 한다면 쉽게 풀수 있을것 같다. public sta..

[Java-Algorithm] 백준 9093 단어뒤집기

문제 : https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 풀이 : StringTokenizer와 StringBuffer를 사용하여 간단하게 풀었다. 매 출력 후 sb 를 신규 instance를 생성해줘 값을 초기화 시켜서 사용했다. 뒤집는건 단어 역순으로 붙여 출력하는 방식을 사용했다. public static void main(String[] args) throws IOException { BufferedReader br = new B..

[Java-Algorithm] 백준 11650 좌표 정렬하기 풀이

문제 : https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 : Arrays.sort를 이용하여 풀어보았다... Comparator를 사용하면 비교가 쉬워지는데, 처음에 2차원 배열을 compare 안해봐서... 조금 당황했지만 그냥 되부렀네...~ public class Main{ public static void main(String[] args) throws NumberFormatEx..

[Java-Algorithm] 백준 11653 소인수 분해 풀이

문제 : https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 풀이 : 소인수분해는 어떤건지 다들 아실거라 생각한다. 간단하게 while문만으로 나눠주는 값을 하나씩 증가시키면서 나눠보려고 했는데 시간초과가 떴다... 뭐지...? 해당코드.. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int i = 2; while(N >= i) { if(N % i == 0) { System.out.println(i); N /= i; } else { i..

[Java-Algorithm] Quick Sort 구현 및 설명

오늘은 Quick Sort에 대해 공부해 보려고한다. 이름에서도 보이는 바와 같이 빠른 정렬이다. 퀵 정렬의 메커니즘은 크게 다음과 같다. Sorting할 List를 피벗(pivot)을 기준으로 두 개의 부분리스트로 나누어 하나는 피벗보다 작은 값들의 부분리스트, 다른 하나는 피벗보다 큰 값들의 부분리스트로 정렬 후 , 각 부분리스트에 대해 다시 위의 로직을 재귀적으로 수행하여 정렬하는 방법이다. 쉽게 말해 부분을 나눠서 각각 자기가 맡은 부분을 정렬시킨다고 보면 된다. 로직 순서 1. 피벗을 선택 2. 피벗을 기준으로 양쪽에서 피벗보다 큰 값, 혹은 작은 값을 찾는다. 왼쪽에서부터는 피벗보다 큰 값을 찾고, 오른쪽에서부터는 피벗보다 작은 값을 찾는다. 3. 양 방향에서 찾은 두 원소를 교환 4. 왼쪽에..

[Java-Basic] Java 언어의 특징 및 OOP의 특징

자바는 제임스 고슬링 형님이 만든 대표적인 객체지향언어이다. 자바의 특징을 5가지로 나누어본다면 1). 객체지향 프로그래밍(OOP) 2). 자동 메모리 관리 (Garbage Collector) 3). 운영체제에 독립적 실행 -> JVM 4). 멀티쓰레드 지원 5). 동적 로딩 지원 한가지씩 살펴보자 객체지향 프로그래밍 (OOP) 객체지향프로그래밍의 대표적인 특징을 빼놓을 수 없을것이다. 대표적 특징에는 상속, 캡슐화(은닉화), 다형성, 추상화 가 있다. 객체지향 프로그래밍은 저러한 특징들을 이용하여 코드의 재사용성을 좋게 하고, 유지보수를 용이하게 만들며 개념별 관리가 편리하다. 1). 상속 : 부모 클래스의 변수 및 메서드 등을 자식 클래스가 전부 물려받아 사용(접근) 할 수 있는 성질 -> 자식클래스..

반응형