본문 바로가기

분류 전체보기44

[백준 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.
[Java/자바] 큰 정수 입력 받기 - BigInteger BigInteger int, long과 달리 숫자를 문자열 형태로 처리해 담을 수 있는 숫자의 범위가 무한함 숫자가 기존 정수형 데이터 타입이 수용 가능한 범위를 넘어설 경우 사용 데이터 타입 크기 범위 int 4 byte -2³¹ ~ (2³¹-1) -2,147,483,648 ~ 2,147,483,647 long 8 byte -2⁶³ ~ (2⁶³-1) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 보통 입력되는 숫자가 위 범위를 벗어나는 경우는 잘 없으나 알고리즘 테스트 등에서 간혹 아주 큰 수를 입력받는 경우가 있다. 그때 사용한다. 선언 import java.math.BigInteger; BigInteger bigInt = new BigInteger.. 2022. 11. 29.
[백준 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.
[스프링 부트] 어노테이션 @Controller - 서블릿 역할 - 빈에 자동 주입 * 스프링의 컨테이너를 사용하려면 빈에 등록이 되어야 한다. (1) 등록 / (2) 어노테이션 등록 @Controller 붙이면 서블릿 역할하는 클래스가 되며 빈에 등록 된다 @RequestMapping(value="/문자열") - 웹 구조에서 클라이언트가 요청하는 주소 지정 - value= 생략 가능 @ResponseBody - 응답에 대해 지정 - 응답 결과를 body 태그로 보냄 - 아래 메소드의 리턴 값을 응답으로 삼음 500번 에러 - 자바 코드에서 문제가 생겨 서버 쪽에서 응답하지 못하는 상태 2022. 7. 14.