본문 바로가기

백준26

[백준 11650] 좌표 정렬하기 - Java 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. ❓ 계속 고민해봤는데 정말 답이 안 나왔다. 0행에 x값, 1행에 y값을 저장하는 2차원 배열로 풀어보자니 0행 배열을 정렬하면 0행 배열과 1행 배열의 연관성이 끊김. 그래서 아예 String으로 입력 받아 [ic]Arrays.sort()[.. 2022. 12. 17.
[백준 2108] 통계학 - Java 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 1. 산술평균 : N개의 수들의 합을 N으로 나눈 값 2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값 4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출.. 2022. 12. 11.
[백준 2751] 수 정렬하기 2 - Java 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. ❓ 단순히 [ic]Arrays.sort()[/ic] 를 이용하면 시간초과가 나나? 싶어서 잠깐 고민했지만 의외로 쉽게 통과 돼서 놀랐다. 하지만 아무래도 더 간편한 방법이 있을 것 같아 찾아봤다. ❗ int 배열 대신 boolean 배열을 사용한다. 풀이 1 첫째 줄에서 입력 받은 N 만큼의 크기를 가지는 int 배열 생성 for문을 돌면.. 2022. 12. 4.
[백준 2869] 달팽이는 올라가고 싶다 - Java 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. ❓ 알고리즘은 금방 해결했는데 시간 초과에서 고민했던 문제. 사실 처음엔 정상에 올라간 후에는 미끄러지지 않는다. 라는 조건을 고려하지 않아 원하는 값이 나오지 않았었다. 문제는 잘 읽어야 한다.. 2022. 11. 14.
[백준 2563] 색종이 -Java 문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래.. 2022. 10. 28.
[백준 2941] 크로아티아 알파벳 - Java (+23.09.05) https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net ❓ 금방 풀 수 있을 거라 생각했는데 자잘한 문제에 막혀서 몇 시간을 고생했다. 처음엔 [ic]System.in.read()[/ic]로 한 글자씩 입력 받도록 코드를 작성했는데, 그렇게 하니 \r, \n이 들어오는 경우도 생각해야 해서 코드가 난잡해져 [ic]BufferedReader[/ic]를 이용해 풀어보려 했다. 그렇게 이클립스로 코드를 작성하고 테스트 .. 2022. 10. 21.
[백준 5622] 다이얼 - Java https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net ❓ 알파벳과 매칭되는 숫자를 찾는 데에서 고민을 많이 했다. 아무리 생각해봐도 if문(혹은 switch-case문)으로 알파벳을 구별해 숫자를 매칭하는 방법밖에 떠오르지 않았다. ❗ 근데 진짜 그렇게 푸는 게 맞았다(...). 다른 규칙이 있는 줄 알고 끙끙댔는데, 최대한 단순하게 생각해볼 필요가 있었다. 아직 문제를 많이 안 풀어봐서 뭐가 맞는 방법인지 알기 어려우니 더 열심히 풀어봐야 할 듯... ✨ 참고 https://st-lab.tistory.com/67 [백준] 5622번.. 2022. 10. 19.
[백준 4673] 셀프 넘버 - Java (+) 🔗https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net ❓ 처음엔 문제를 이해하는 것도 어려웠다. 셀프 넘버가 뭔진 대충 알겠는데, 이 수가 셀프 넘버인지 아닌지 대체 어떻게 알지? 식을 내가 새롭게 세워야 하나? 하지만 테스트 땐 검색을 못할텐데... 별의 별 생각을 다했다. ❗ 다시 생각해보니 그 수가 셀프넘버인지 아닌지 아는 건 필요 없었다. 필요했으면 그 방법을 문제에서 먼저 제시했겠지... .. 2022. 10. 18.