전체 글505 [BOJ] 9095 1, 2, 3더하기 - JAVA 1. 문제 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 이 문제 설명이 좀 이상하다. n을 1,2,3의 합이 아니라 1,2,3 조합으로 설명해야 차라리 명확할 것 같다. 문제만 보면 2는 1+1만 되고 2는 안될 것 같은데 2도 된다. 1 --> 1 2 --> 1+1, 2 3 --> 1+1+1, 2+1, 1+2, 3 4 --> 1+1+1+1, 1+3, 1+1+2, 1+2+1, 2+2, 2+1+1, 3+1 n --> 1+(n-1), 2+.. 코딩테스트/BOJ 2022. 3. 17. [BOJ] 11053 가장 긴 증가하는 부분 수열 - JAVA 1. 문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50}인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 2. 풀이 전에 푼 적이 있어서 풀이가 .. 코딩테스트/BOJ 2022. 3. 16. [BOJ] 1912 연속합 - JAVA 1. 문제 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 2. 풀이 (이전값 최대+현재 값)과 현재 값을 비교해서 .. 코딩테스트/BOJ 2022. 3. 15. [BOJ] 2156 포도주 시식 - JAVA 1. 문제 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 .. 코딩테스트/BOJ 2022. 3. 15. [BOJ] 17070 파이프 옮기기 1 - JAVA 1. 문제 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1 ×1 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회.. 코딩테스트/BOJ 2022. 3. 15. [JAVA] 전위연산, 후위연산 메모리 및 속도 차이 보호되어 있는 글 입니다. 2022. 3. 14. [BOJ] 16637 괄호 추가하기 - JAVA 1. 문제 https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다. 수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 .. 코딩테스트/BOJ 2022. 3. 13. [BOJ] 1463 1로 만들기 - JAVA 1. 문제 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 2. 풀이 DP N+1배열을 만든다.(숫자로 접근하기때문에 그냥 메모리 한 칸 더 쓰는게 낫다. 매번 계산하는게 더 시간드니까) -1에서 접근한 값, /2에서 접근한 값, /3에서 접근한 값을 전부 비교해서 그중에 가장 작은 값을 선택한다. 주석보면 나는 +1을 마지막으로 .. 코딩테스트/BOJ 2022. 3. 13. [BOJ] 2579 계단 오르기 - JAVA 1. 문제 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 밟고 이어 두 번째 계단이나, 세 번째 계단으로 오를 수 있다. 하지만, 첫 번째 계단을 밟고 이어 네 번째 계단으로 올라가거나.. 코딩테스트/BOJ 2022. 3. 12. [BOJ] 10844 쉬운 계단 수 - JAVA 1. 문제 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 2. 풀이 규칙 최선을 다해 그려봤다.ㅋㅋㅋ N=1일때, 0빼고 1~9까지 한번씩 모두 가능하다. 그래서 N=1일때 계단수는 9다. N=2일때, 각 숫자는 자신의 양 옆에 있는 숫자값을 더해서 구할 수 있다. 예를 들면, N=1인 숫자 중 5는 N=2가 됐을 때 다음 수로 4와 6 중에 선택할.. 코딩테스트/BOJ 2022. 3. 12. [JAVA] StringBuilder의 append(), String의 + 연산자 속도차이 StringBuilder의 append()와 String의 +연산자의 속도차이 자바에서 String은 변경이 안되는 객체이기 때문에 +연산을 하면 내부적으로 새 메모리를 할당받아서 사용한다고 한다. 그래서 String의 변경이 많은 경우에는 StringBuilder를 사용한다. 그런데 이 둘의 속도차이는 대략 어느정도 나는지, 정확히 어떤 부분에서 차이가 발생하는지 궁금해서 테스트해봤다. 테스트코드 초반 tc가 결과값이 좀 튀어서 앞의 두번 정도 계산하지 않고 12번 돌렸다. 출력창의 (final O)표시는 무시해도 된다. 출력창 문자열 지우는걸 깜빡했다. final과 일반 string을 둘다 테스트해봤는데 내 컴퓨터에서는 유의미한 차이가 나지 않아서 코드를 지웠다. public static void m.. 기록/JAVA 2022. 3. 11. [JAVA] StringBuilder의 insert, append insert StringBuilder의 insert메서드는 다시 AbstractStringBuilder의 insert메서드를 실행한다. insert 메서드 내에서 직접 한 번, str.getChars() 메서드 안에서 한 번 호출되어 총 System.arraycopy() 메서드가 두 번 호출된다. //AbstractStringBuilder.java 클래스 public AbstractStringBuilder insert(int offset, String str) { if ((offset length())) throw new StringIndexOutOfBoundsException(offset); if (str == null) str = "null"; int len = str.. 기록/JAVA 2022. 3. 10. 이전 1 ··· 31 32 33 34 35 36 37 ··· 43 다음