본문 바로가기

알고리즘 자료구조

[프로그래머스] 글자 지우기 🖊️문제 문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return하는 solution함수를 작성해 주세요. 🖊️문제 풀이 import java.util.*; class Solution { public String solution(String my_string, int[] indices) { String answer = ""; Arrays.sort(indices); int idx = 0; for (int i = 0; i < my_string.length(); i++) { if (idx < indices.length && i == indices[idx]) { idx++; } else { an.. 더보기
[프로그래머스] 배열 만들기1 🖊️문제 정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return하는 solution함수를 완성해주세요. 🖊️문제 풀이 import java.util.*; class Solution { public int[] solution(int n, int k) { int[] answer = {}; ArrayList list = new ArrayList(); for (int i = 1; i 더보기
[프로그래머스] 문자 개수 세기 🖊️문제 알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return하는 solution 함수를 작성해주세요. 🖊️문제 풀이 class Solution { public int[] solution(String my_string) { int[] answer = new int [52]; for (int i = 0; i < my_string.length(); i++) { char c = my_string.charAt(.. 더보기
[백준] 10807 개수 세기 🖊️문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 🖊️문제 풀이 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //n, 공백으로 구분된 정수 입력, v 입력 int n = sc.nextInt(); sc.nextLine(); String num = sc.nextLine(); String [] arr = num.split(" "); String v = sc.next(); //v와 일치하는 정수의 개수 출력 int cnt = 0; for(String s : arr){ if(v.equals(s)){ cnt++; } } System.out.pr.. 더보기
[백준] 9012 괄호 🖊️문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문.. 더보기
[자료구조와 함께 배우는 알고리즘 입문] 6. 정렬 알고리즘(3) 6. 퀵 정렬 6-1. 퀵 정렬 살펴보기 퀵 정렬 알고리즘은 말 그대로 아주 빠른 정렬 알고리즘이다. 퀵 정렬은 배열 내에서 그룹을 나누는 기준인 '피벗'을 임의로 설정해서 피벗을 기준으로 그룹 내 정렬을 진행하고 또 각 그룹에 대해 피벗 설정, 그룹 나누기를 반복해 모든 그룹의 데이터가 1개가 되면 정렬을 마치게 된다. 6-2. 퀵 정렬 구현하기 퀵 정렬은 분할 정복 알고리즘에 해당되기 때문에 재귀를 이용하면 간단하게 구할 수 있다. static void swap(int[] arr, int idx1, int idx2){ int tmp = arr[idx1]; arr[idx1] = arr[idx2]; arr[idx2] = tmp; } static void quickSort(int[] arr, int lef.. 더보기
[프로그래머스] 숫자 문자열과 영단어 🖊️문제 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자 영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 s.. 더보기
[프로그래머스] 짝수는 싫어요 🖊️문제 정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요 🖊️문제 풀이 class Solution { public int[] solution(int n) { int[] answer = {}; if(n%2==0){ answer = new int[n/2]; } else{ answer = new int[n/2+1]; } for (int i = 0; i < answer.length; i++) { answer[i] = (i*2)+1; } return answer; } } 더보기

728x90