본문 바로가기

PS

(77)
[Programmers] LV1 - 숫자 문자열과 영단어 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 문제 파악 주어진 문자열 s에서 영단어로 되어있는 숫자 문자열을 숫자로 바꿔서 정수 값을 반환하는 문제이다. 문제를 풀고 보니 대부분 다 비슷하게 푼 거 같은데 숫자 문자열 배열 하나와 숫자 배열 하나씩 선언하여 s를 replaceAll 하여 바꿔나간다. 더보기 class Solution { public int solution(String s) { i..
[Programmers] LV2 - 괄호 회전하기 https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 문제 파악 주어진 문자열을 왼쪽으로 회전시켜 가면서 올바른 괄호 문자열이 만들어지는지 확인하는 것 회전하면서 몇 개의 올바른 괄호 문자열이 만들어지는지 반환 해주면 된다. 더보기 import java.util.*; class Solution { public int solution(String s) { int answer = 0; //홀수면 올바른 괄호를 만들 수 없기 때문에 if(s.length()%2 == 1){ return answer; } for(int idx = 0; idx
[BOJ] 1865번 : 웜홀 https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 알고리즘 분류 그래프 이론 벨만-포드 문제 파악 위의 캡처에서 알 수 있듯이 "시간이 뒤로 가게 된다"라는 문구로 유추해보면 음수 가중치가 존재한다는 것을 알 수 있고 벨만-포드 알고리즘을 활용하여 문제를 풀어야겠다고 접근했다. 추가로 다익스트라, 벨만-포드 알고리즘 중에서 왜 벨만-포드를 선택해야 하는지 궁금했는데 아래 링크에 잘 설명이 되어있어 참조 링크를 달아놓는다. https:..
[BOJ]11404번 : 플로이드 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 알고리즘 분류 그래프 이론 플로이드-와샬 문제 파악 문제의 제목처럼 플로이드-와샬 알고리즘으로 해결하는 문제이다. J번째 도시에서 K번째 도시로 가는 버스 비용이 주어지며 해당 도시까지 가는 최소 비용을 구하여 출력하는 문제 1. 고려해야 될 점이 있다면 예제 입력에서 (1,2,3) , (1,2,2)처럼 출발지와 목적지가 같은데 버스 비용이 다른 경우가 있으므로 최소치가 입력되게 해줘야 하는 것 ..
[Programmers] LV3 - 단어 변환 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 문제 파악 문제에 나와 있듯이 1. 한 번에 한 개의 알파벳만 변환할 수 있다. 2. words 배열에 있는 단어로만 변환할 수 있다. 3. begin에서 target으로의 변환 할 때까지 걸린 횟수를 return 하고, 변환할 수 없을 경우 0을 return 해준다. 더보기 import java.util.*; clas..
[Programmers] LV3 - 순위 https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 문제 파악 1.results 배열에 선수끼리의 시합 결과가 주어진다. ( "[4,2]라면 4번 선수가 2번 선수를 이김") 2. 해당 결과를 가지고 순위의 파악이 가능한 사람은 몇 명인가? 다른 분들을 보아하니 LIST로 푸신 분도 있고 한데 나는 BOJ의 저울 문제가 생각나서 플로이드-와샬 알고리즘으로 풀었다. 더보기 import java.util.*; class Solution { static final int INF = Integer.MAX_VALUE / 2; p..
[Programmers] LV1 - 크레인 인형뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제 파악 1. 크레인이 moves 배열의 위치로 가서 인형을 뽑는다 (이동 후 board [row][col]!= 0 인 위치 찾기) 2. 해당 row를 찾아서 값을 가져오고 바구니에 순차적으로 쌓는다. (Stack) 3. 이전에 쌓여있는 인형과 지금 뽑아서 바구니에 넣으려는 인형이 같다면 터트린다. (이 과정에서 인형 2개가 사라짐) 그리고 뽑은 위치의 board[row][col] 값은..
[Programmers] LV2 - 짝지어 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제 파악 1. 문자열 중에서 'aa'와 같이 같은 문자가 연속되어있다면 해당 부분을 제거 한 다음 문자열을 다시 만든다 2. 이 과정을 반복하여 공백으로 만들 수 있다면 1 아니라면 0을 return 한다. 처음에는 char key = 'a'를 이용해서 해당 문자열에 'aa'가 없을 때까지 반복하고 'bb'를 만들어서 replaceAll로 처리하였..