반응형

Java 79

[Java-Algorithm] 백준 1789 풀이

문제 : https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 풀이 : 1+199 = 200 ..1+2+197 = 200 ... 1+2+3+194 = 200 이런식으로 해서 가장 많은 숫자의 합으로 이루어질때를 구하면 된다. 그래서 값을 더할 때마다 count를 증가시켰고, 최종 마지막때는 값이 더 커질수 있으니 그때는 count -1 을 해준다. public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System..

[Java-Algorithm] 백준 7576 토마토 풀이

문제 : https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 : 좌표 문제는 처음 접해봤다... 2차원 배열을 써야되겠는건 알겠는데 쉽지 않았다... 먼저 어떻게 풀어야될지 감이 안잡혔다. 너비 우선탐색 BFS를 생각해보니 Queue를 써야겠구나 싶었다. 방법 1). 우선 익은 토마토의 기준으로 안익은토마토를 익히는걸 중점적으로 생각했다. 그래서 익은 토마토의 위치를 Queue에 담아놓고 익은토마토를 한바퀴돌면서 주변의 안익은..

[Java-Algorithm] 백준 2606 바이러스 풀이

문제 : https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 : DFS 그래프로 풀었다... 전역으로 Cnt 놓고, 순서대로 시작 정점부터 재귀를 통해 Cnt하는 방법으로 풀었다. static int cnt = 0; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

[Java-Algorithm] 백준 2217 로프 풀이

문제 : https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 풀이 : 이 문제는 시간제한이 있는것을 생각안하고, 쉬운문제다 생각하고 2중for문을 사용해서 처음에 풀었다... 안일했다.. 결국 아래 코드로 로직 수정. 처음에는 문제가 이상해보였지만, 결국 결론은 간단하였다. K의 하중을 N개의 로프가 각각 K/N 씩 받는다고한다. ==> 예를 들어보자. 최종 문제에서 제시하는 정보는 선택한 로프 10, 20 , 30, 40 , 50 이 있..

[Java-Algorithm] 백준 4949 균형잡힌 세상 풀이

문제 : https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 풀이 : 스택에 여는 괄호들을 쌓아두고, 괄호를 하나씩 빼면서 체크했다. 출력조건이 뭔가 안맞았는지 계속 틀렸다고 떠서... 찾느라 고생했다 결과는 같은데 띄어쓰기가 껴있었다... public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputS..

[Java-Algorithm] 백준 1759 암호 만들기

문제 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 : 암호 조합을 만든다는걸 보고, 조합 백트래킹 공부했던것이 생각났다. 처음에 System.out.print로 하나씩 출력했는데 이상하게 계속 틀렸습니다가 떴엇다.. 답은 맞는데... 뭐가 문제지 다시 봐도 봐도 모르겠었다.. 결국 혹시나 해서 StringBuilder로 만들어서 한번에 출력했더니 성공했다.. 뭐지.. 중요한점 1). 사전순으로 나와야한다. => Arrays.sort를 활..

[Java-Algorithm] 백준 10808 알파벳 개수 풀이

문제 : https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 풀이 : 아스키코드 숫자만 알면 쉽게 푸는 문제인것 같다. a = 97 public static void main(String[] args) throws IOException { //알파벳 갯수 : 26개 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String n = br.readLine(); String[] arr = n.split(""); int[] num = new int[26]; for(..

[Java-Algorithm] 백준 1541 잃어버린 괄호 풀이

문제 : https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 : 처음에는 괄호의 위치를 -기준으로 , 괄호가 나온 갯수로 풀이를 해보려고했다. 하지만 더 간단한 방법이 있을것 같아 생각해보았는데, -기준 + 기준으로 묶어서 더하고 빼고 하면 될것 같았다. 결국 괄호의 위치가 뺄셈을 할 수 있게 만들어주는개념으로 괄호를 사용한다는 것을 배제 하였다. 순서 1). 처음에는 -기준으로 쪼갠다. 2). - 기준으로 쪼개지면, 뭉쳐있는 아이들은 ..

[Java-Algorithm] 백준 10953 풀이

문제 : https://www.acmicpc.net/problem/10953 10953번: A+B - 6 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 : Comparator를 사용하여 순서정렬, 가입 순서는 비교대상이 아니다.(이미 정렬되있기 때문에) => 처음에 2차원배열을 쓸까 Map을 쓸까 고민하던 멍청이다... 아직도 어떤 문제에 어떤 자료구조를 사용할지 잘 모르지만 열심히 하면 될것이라 생각한다..! public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..

[Java-Algorithm] 백준 1181 단어정렬 풀이

문제 : https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 : 우선 정렬을 위해 Arrays.sort를 사용했다. Arrays.sort에 Comparator를 적용시켜, 정렬 방식을 정의할 수 있었다. compare 메소드에서의 중요한점.!!!!! a.compareTo(b) 메소드로, 사전순으로 정렬할 수 있었다. => 자동으로 해준다.!!! 추가적으로 compare 메소드의 return값은 양수 0 음수 세가지로 구분되는데, 양..

반응형