전체 글 795

프로그래머스 23749번 카드컨트롤 (JAVA)

https://www.acmicpc.net/problem/23749 23749번: 카드컨트롤 준석이와 수현이는 카드게임을 하고 있다. O가 적힌 카드 $N$장, X가 적힌 카드 $N$장이 섞여 있다. 게임은 다음 순서로 진행된다. 준석이가 제일 위에 있는 카드를 가져간다. 수현이가 다음 카드를 www.acmicpc.net 저는 BFS를 통해 문제를 해결했습니다. BFS를 통해 각각의 카드를 조작해보고 준석이가 이기는 경우를 찾았습니다. 방문체크는 배열을 String으로 하여 체크하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.ut..

알고리즘 2023.06.04

백준 15993번 1,2,3 더하기 8 (JAVA)

https://www.acmicpc.net/problem/15993 15993번: 1, 2, 3 더하기 8 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 100,000보다 작거나 같다. www.acmicpc.net 저는 DP를 이용해 문제를 해결했습니다. 저는 개수가 홀수개와 짝수개를 나눠서 구하였습니다. index를 통해 0은 짝수 , 1은 홀수개로 해당 숫자를 표현하는 개수를 dp에 저장했습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.fun..

알고리즘 2023.06.03

프로그래머스 1로 만들기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181880 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결했습니다. 배열을 돌면서 배열의 요소를 1로 만드는데 얼마나 걸리는지를 체크하여 이를 answer에 더해주었습니다. class Solution { public int solution(int[] num_list) { int answer = 0; for(int num : num_list){ while(num != 1){ if(num % 2 == 0){ num /= 2; ..

알고리즘 2023.06.02

백준 18235번 지금 만나러 갑니다 (JAVA)

https://www.acmicpc.net/problem/18235 18235번: 지금 만나러 갑니다 첫 번째 줄에 세 정수 N, A, B가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ A, B ≤ N, A ≠ B) www.acmicpc.net 저는 BFS를 통해 문제를 해결했습니다. 처음에는 큐에 두 위치를 한번에 넣어 해결하려고 했습니다. 하지만 메모리 초과가 나오게 됩니다. 그래서 큐에 각각의 위치를 넣고 다른 인덱스로 오리인지 육리인지를 확인하였습니다. visited boolean 배열을 통해 시간에 따라 오리 또는 육리가 어디에 있을 수 있는지를 파악하고, 오리면 육리가 해당 시간에 해당 지점에 있을 수 있는지, 육리라면 오리가 해당 시간에 있을 수 있는지를 판단하여 결과값을 찾았습니다. ..

알고리즘 2023.06.01

백준 2461번 대표 선수 (JAVA)

https://www.acmicpc.net/problem/2461 2461번: 대표 선수 입력의 첫 번째 줄에는 학급의 수를 나타내는 N과 각 학급의 학생의 수를 나타내는 M이 하나의 빈칸을 사이에 두고 주어진다. 단, 1 ≤ N, M ≤ 1,000이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 www.acmicpc.net 저는 정렬과 우선순위 큐를 통해 문제를 해결했습니다. 먼저 학급마다 오름차순으로 정렬하고 맨 앞의 값을 우선순위큐에 넣었습니다. 우선순위큐는 값이 가장 낮은 값을 맨 앞으로 오도록 하였습니다. 우선순위큐에서 맨 앞에 있은 값을 빼서 해당 학급의 다음 학생을 다시 우선순위 큐에 넣습니다. 그리고 우선순위큐에서 값이 가장 큰 값을 계속 추적해 나가면서 우선순위 큐의 맨 앞과 비교해 차..

알고리즘 2023.05.31

백준 15724번 주지수 (JAVA)

https://www.acmicpc.net/problem/15724 15724번: 주지수 네모 왕국의 왕인 진경대왕은 왕국의 영토를 편하게 통치하기 위해서 1X1의 단위 구역을 여러 개 묶어서 하나의 거대 행정구역인 주지수(州地數, 마을의 땅을 셈)를 만들 예정이다. 진경대왕은 www.acmicpc.net 저는 DP를 통해 구간합을 구하고 이를 활용해 문제를 해결했습니다. 먼저 dp[i][j] = input[i][j] + dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] 를 통해 1,1 부터 i,j까지의 부분합을 구했습니다. 그리고 dp[endY][endX] - dp[startY-1][endX] - dp[endY][startX-1] + dp[startY-1][startX-1]를 통해 ..

알고리즘 2023.05.30

프로그래머스 문자열 묶기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181855 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결했습니다. map을 통해 각 배열의 길이에 해당하는 개수를 세어나갔고, .map의 키를 돌면서 가장 큰 값을 찾았습니다. import java.util.*; class Solution { public int solution(String[] strArr) { int answer = 0; Map cnt = new HashMap(); for(String str : strA..

알고리즘 2023.05.29

프로그래머스 배열의 원소 삭제하기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. delete_list를 돌면서 arr에 있는지 확인하고 boolean을 통해 해당 인덱스의 값이 지워졌는지 아닌지를 판단하였습니다 class Solution { public int[] solution(int[] arr, int[] delete_list) { int size = arr.length; boolean[] isDeleted = new boolea..

알고리즘 2023.05.28

프로그래머스 문자 개수 세기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181902 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결했습니다. 각 문자를 돌면서 대문자인지 소문자인지 판별하고 그에 해당하는 인덱스의 값을 하나 올렸습니다. class Solution { private static final int SIZE = 26; public int[] solution(String my_string) { int[] answer = new int[2 * SIZE]; for(int i = 0 ; i ..

알고리즘 2023.05.27

프로그래머스 정사각형으로 만들기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181830 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결했습니다. 먼저 긴변을 찾고 그 길이보다 길다면 다 0을 넣도록 구현했습니다. class Solution { private static final int EMPTY = 0; public int[][] solution(int[][] arr) { int size = arr.length; for(int i = 0 ; i < arr.length ; i++){ size = M..

알고리즘 2023.05.26