반응형

BOJ 49

[백준_BOJ] 10818. 최소, 최대 JAVA

문제 풀이 최소, 최대를 찾는 문제입니다. 사실 이 문제를 풀이할 때에 배열을 꼭 만들어주지 않아도 되지만 카테고리가 배열이기 때문에 배열을 만들어주어 배열에 값을 입력받았습니다. Integer.MIN_VALUE를 max 변수에 저장하고 Integer.MAX_VALUE를 min 변수에 저장한 뒤 입력되는 정수 가운데 가장 최솟값과 최댓값을 찾아 min과 max에 저장해준 뒤 모든 정수의 값을 확인하고 출력해주었습니다. 코드 출처 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,..

알고리즘 연습 2019.12.18

[백준_BOJ] 1647. 도시 분할 계획 _ JAVA

문제 풀이 크루스칼 알고리즘을 이용해서 풀이한 문제입니다. 크루스칼 알고리즘을 이용하기 위해 3가지 메서드 union, find, isSame을 만들어주었습니다. 이전에 풀이했던 1922. 네트워크 연결 문제처럼 문제풀이를 했다가 메모리 초과가 발생했던 문제입니다. 사실 생각해보면 가장 짧은 비용의 연결선부터 연결하기 때문에 map 배열은 풀이에 필요하지 않습니다. N이 10만까지 가능하기 때문에 2차원 map 배열을 만들면 메모리 초과가 발생합니다. size 변수를 이용해서 N - 2개의 연결이 만들어질 때까지 가능한 간선들을 계속 연결해주었습니다. 입력이 크다는 점에 주의하면 크루스칼 알고리즘을 이용해 쉽게 풀이할 수 있는 문제입니다. 먼저, union 메서드에서는 시작점과 도착점 x, y를 매개변수..

알고리즘 연습 2019.12.13

[백준_BOJ] 1922. 네트워크 연결 _ JAVA

문제 풀이 크루스칼 알고리즘을 이용해서 풀이한 문제입니다. 크루스칼 알고리즘을 이용하기 위해 3가지 메서드 union, find, isSame을 만들어주었습니다. 추가적으로 비용이 적은 간선들부터 연결해주기 위해 Priority Queue를 사용했습니다. Comparable을 이용해 비용순으로 정렬해서 이용하였습니다. 먼저, union 메서드에서는 시작점과 도착점 x, y를 매개변수로 입력받아서 find(x) 와 find(x)가 같지 않다면, 서로 다른 그룹에 속해 있는 것이므로 두 그룹 중에서 작은 값으로 합쳐주었습니다. 크기를 비교하여 합쳐주지 않고 그냥 x나 y로 합쳐주어도 괜찮지만 작은 번호로 합쳐주면 검색 속도를 높여줄 수 있습니다. find 메서드는 자신이 그룹 번호와 같은 경우, 자기 자신을..

알고리즘 연습 2019.12.13

[백준_BOJ] 1110. 더하기 사이클 _ Java

문제 풀이 간단한 시뮬레이션 문제 정도로 생각하면 될 것 같습니다. 수의 변형 규칙이 주어질 때 시작할 때와 같은 값 즉, 원래의 숫자로 돌아가는 데까지 걸리는 사이클을 구하는 문제입니다. 저는 while 문을 사용하여 풀이하였습니다. 사이클이 성립될 때까지 주어진 규칙대로 계속 반복 수행하기 위해서 입니다. 먼저 while 문이 수행될 때마다 cnt를 1씩 증가시켜주었습니다. 그리고 나서 주어진 수의 1의 자리의 수를 second 변수에 저장해두었습니다. tmp에 원래 일의 자리의 수를 옮겨 담은 뒤 새로 만들어진 다음 수 " (first + second) % 10 " 의 일의 자리를 second에 저장해주었습니다. 그리고 나서 기존의 숫자를 저장해둔 N과 새로 만들어진 수가 같은지를 비교하여 같다면 ..

알고리즘 연습 2019.12.08

[백준_BOJ] 10951. A+B - 4 _ Java

문제 풀이 이번 문제는 입력이 종료되는 조건이 따로 주어지지 않습니다. 그래서 Scanner를 이용하여 while문의 조건으로 sc.hasNextInt() 가 거짓일 경우 -> 더 이상 입력이 없는 것으로 간주하여 종료해주었습니다. A와 B를 입력받은 이후에는 A+B를 출력해주면 되는 간단한 문제였습니다. 코드 출처 https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net

알고리즘 연습 2019.12.08

[백준_BOJ] 10952. A+B - 5 _ Java

문제 풀이 이 문제는 간단히 두 수를 입력받아 합을 출력해주면 되는 문제입니다. 입력이 많은 경우를 생각하여 Stringbuilder를 사용하였습니다. while문에서 A 와 B가 모두 0이 아니라면 A+B의 값을 Stringbuilder에 계속 담아주었습니다. while문이 종료되면 결과 값을 출력해주고 종료해주었습니다. 코드 출처 https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net

알고리즘 연습 2019.12.08

[ 알고리즘 연습 ] 2747. 피보나치 수 _ JAVA

문제 풀이 이 풀이법은 「 JAVA 프로그래밍 면접 이렇게 준비한다 」 책을 통해 알게 되었습니다. 참고 자료 https://book.naver.com/bookdb/book_detail.nhn?bid=8655189 JAVA 프로그래밍 면접 이렇게 준비한다 자바 프로그래머의 성공적인 입사/이직을 돕기 위한 면접과 코딩 인터뷰 지침서. 1부는 면접 일반론과 자바 프로그래밍뿐만 아니라 프로그래머에게 꼭 필요한 기본 알고리즘이나 자료구조를 다룬다. 2부는 자바 언어의 기본과 테스트 코드 작성법, 가상머신의 이해 등 자바 핵심을 다룬다.3부는 자바 개발 환경과 관련된 컴포넌트와 프레임워크를 다룬다. 제티, 플레이 프레임워크, REST, 스프링, 하이버네이트, 안드로이드 등 현재 자바 개발 환경에서 많이 사용하는 ..

알고리즘 연습 2019.12.07

[ 알고리즘 연습 ] 14761. FizzBuzz _ JAVA

문제 풀이 이 풀이법은 「 JAVA 프로그래밍 면접 이렇게 준비한다 」 책을 통해 알게 되었습니다. 참고 자료 https://book.naver.com/bookdb/book_detail.nhn?bid=8655189 JAVA 프로그래밍 면접 이렇게 준비한다 자바 프로그래머의 성공적인 입사/이직을 돕기 위한 면접과 코딩 인터뷰 지침서. 1부는 면접 일반론과 자바 프로그래밍뿐만 아니라 프로그래머에게 꼭 필요한 기본 알고리즘이나 자료구조를 다룬다. 2부는 자바 언어의 기본과 테스트 코드 작성법, 가상머신의 이해 등 자바 핵심을 다룬다.3부는 자바 개발 환경과 관련된 컴포넌트와 프레임워크를 다룬다. 제티, 플레이 프레임워크, REST, 스프링, 하이버네이트, 안드로이드 등 현재 자바 개발 환경에서 많이 사용하는 ..

알고리즘 연습 2019.12.07

[ 백준_BOJ ] 1149. RGB거리 _ JAVA 문제풀이

문제 풀이 어렵지 않게 문제풀이 할 수 있었던 DP 문제입니다. 입력으로 0번째는 빨간색(R), 1번째는 초록(G), 2번째는 파랑(B)로 집을 칠하는 데 필요한 비용의 정보가 주어집니다. 인접한 이웃집에는 같은 색으로 칠할 수 없기 때문에 0번째 집으로부터 시작하여 DP를 이용하여 풀이하였습니다. 2중 for문을 이용하여 바깥 for문은 1부터 N-1까지 모든 집에 대해 최적의 값을 찾기 위해 써주었고 안쪽 for문은 0부터 2까지 집을 빨강, 초록, 파랑으로 색칠할 때의 비용을 구해주었습니다. ※ 문제의 해법은 바로 이전 집까지의 다른 색을 칠한 최소 값에 더해주어 현재의 집을 색칠하는 것입니다. 이를 계속 진행하면 N-1번째 줄에는 마지막 집을 빨강, 파랑, 초록으로 색칠할 때의 최소값이 구해질 것..

알고리즘 연습 2019.10.31
반응형