전체 글 795

백준 14888번 연산자 끼워넣기 (JAVA)

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 저는 dfs를 통해 문제를 해결하였습니다. dfs로 모든 연산을 해보고 가장 작은 값과 가장 큰 값을 찾아 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; i..

알고리즘 2023.11.01

백준 12933번 오리 (JAVA)

https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 2중 for문을 사용하였고, 내부의 for문을 통해 한마리가 낼 수 있는 소리를 모두 찾았고, 이를 for문을 돌려 모든 오리의 최소 마리수를 찾았습니다. quack가 모두 나와야 하고, 중간에 끊기면 안되기에 입력의 길이가 5의 배수인지를 확인하고, 모든 문자를 사용했는지까지 판단하여 문제를 해결하였습니다. package BOJ.etc; import java.io.Buffere..

알고리즘 2023.10.31

프로그래머스 5명씩 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 5명씩 짝지으면 되기에 인덱스를 계산하여 해당하는 맨 앞 사람을 결과 배열에 넣었습니다. class Solution { public String[] solution(String[] names) { int size = names.length / 5; if(names.length % 5 != 0){ size++; } String[] answer = new S..

알고리즘 2023.10.31

백준 7490번 0 만들기 (JAVA)

https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 저는 만들 수 있는 모든 수식(문자열)을 만들고 해당 수식이 0이 되는지를 판단하였습니다. 이때 저는 뒤에서부터 계산을 하였습니다. 뒤에서부터 숫자 빈칸이라면 계속 숫자들을 만들어나가고, + 또는 - 가 나온다면 그 값을 결과값에 더하거나 뺴서 문제를 해결하였습니다. 앞에서 부터하면 이 값을 빼야하는지 더해야하는지를 판단하기 어렵기 때문에 뒤에서부터 하여 문제를 해결하였습니다. package BOJ.etc; ..

알고리즘 2023.10.29

백준 18808번 스티커 붙이기 (JAVA)

https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 각각의 스티커가 위 왼쪽부터해서 들어갈 수 있는지를 판단하고, 들어갈 수 있다면 해당 자리에 바로 스티커를 붙입니다. 모든 지점을 돌았는데도 붙일 수 없다면 시계 방향으로 90도 회전 시키고 위의 로직을 다시 진행하여 제자리로 돌아올 때까지 스티커를 붙일 자리가 없다면 넘어가게 구현하였습니다. package BOJ.etc; import java.io.Buff..

알고리즘 2023.10.28

백준 2615번 오목 (JAVA)

https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 모든 지점에서 8방향으로 5개 연속으로 있는지를 판단하였습니다. 이때 문제점은 중간 지점으로 했을때 6목이 5목으로 판별될 수 있는데, 이를 이전 색을 확인하고 이 색이 지금 색과 같다면 판단하지 않도록 하였습니다. 문제에 가장 왼쪽 그리고 위에 있는 위치를 출력해야하기 때문에 위에서부터 아래로 먼저 왼쪽에서 오른쪽순으로 진행하였습니다. package BO..

알고리즘 2023.10.27

백준 1487번 물건 팔기 (JAVA)

https://www.acmicpc.net/problem/1487 1487번: 물건 팔기 첫째 줄에 최대 이익을 만들어주는 가격을 출력한다. 이익이 최대인 가격이 여러개라면, 가장 낮은 가격을 출력한다. 또, 어떤 가격으로 팔아도 이익을 남길 수 없다면 0을 출력한다. www.acmicpc.net 저는 브루트포스를 통해 문제를 해결하였습니다. 모든 경우에 대해 비교해보면서 가장 이익을 많이 챙길 수 있는 가격을 찾았습니다. 이때 최대인 가격이 여러개일 경우 최소값을 구해야하기 때문에, 저는 입력으로 주어진 가격대만을 기준으로 하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java...

알고리즘 2023.10.26

백준 13302번 리조트 (JAVA)

https://www.acmicpc.net/problem/13302 13302번: 리조트 수영이는 여름방학을 맞이하여 많은 놀이 시설이 있는 KOI 리조트에 놀러가려고 한다. 리조트의 하루 이용권의 가격은 만원이다. 하지만 리조트의 규모는 상상을 초월하여 모든 시설을 충분히 www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. 각각의 일에 리조트를 가지 못하는 일을 제외하고 1 3 5일 이용권을 사용해보고 각각의 경우에 대해 가장 작은 값을 구하였습니다. 이때 중복되는 계산이 존재하기에 이를 DP를 이용해 중복된 계산을 하지 않도록 하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader;..

알고리즘 2023.10.25

백준 15624번 피보나치 수7 (JAVA)

https://www.acmicpc.net/problem/15624 15624번: 피보나치 수 7 첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. www.acmicpc.net 저는 DP를 통해 문제를 해결하였습니다. 피보나치 수와 같이 구현하고, DP를 통해 중복되는 계산을 반복하지 않도록 하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_15624 { private static final int LIMIT = 1_000_000_007; private static final int NOT_VALID = 0; public static..

알고리즘 2023.10.24

백준 1951번 활자 (JAVA)

https://www.acmicpc.net/problem/1951 1951번: 활자 옛날에는 책을 만들 때, 한글자 한글자를 나눠서 활자를 만들어서 그걸 합쳐서 책을 만들었다고 한다. 예를 들면 가나다라는 글씨를 쓰기 위해서는 3개의 활자가 필요할 것이다. 그렇다고 할 때, www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 1~9 : 1 10 ~ 99 : 2 ... 이렇게 되기에 각 구간을 나눠 개수와 해당 길이만큼 결과값을 더하여 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_1951 { private static final int..

알고리즘 2023.10.23