본문 바로가기

CS/Algorithm

(23)
큰수 만들기 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 1. 첫번째 풀이(10번째 테스트 케이스에서 시간 초과) 공책으로 문제를 풀어보니 현재 문자와 다음 문자를 계속 잘라 내주면 원하는 답을 얻을 수 있었다. static String solution1(String number, int k) { StringBuilder builder = new StringBuilder(number); while (k > 0) { for (int i = 0; i < builder.length()-k; i++) { if (builder.charAt(i) < builder.charAt(i+1)) { builder...
짝지어 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 처음엔 String을 ArrayList로 변환 후 끝에서 부터 문자열을 삭제하는 방법을 사용했다. 요소를 삭제한 후에는 인덱스를 다시 설정해주어야 하기 때문에 i+2를 해주었다. private static int solution1(String s) //효율성 통과X { ArrayList arr = new ArrayList(); for (int i =..
프린터 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 참고로 다른 사람들의 풀이는 대부분 while 문의 조건을 isEmpty로 설정해놨음 import java.util.LinkedList; public class 프린터 { public static void main(String [] args) { int [] prio = new int[] {1, 1, 9, 1, 1, 1}; int location = 0; Syste..
기능 개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 레벨 2인데 난이도가 낮은편 배포 날짜를 구할 때 몫이 홀수라면 +1 해주는게 포인트 package question; import java.util.ArrayList; public class 기능개발 { public static void main(String [] args) { int [] progresss1 = {93, 30, 55}; int [] sp..
바이너리 서치(이진 탐색) 현업에서도 많이 사용하고 있는 이진 탐색 알고리즘을 포스팅 하려고 한다. 이진 탐색을 사용하려면 기본적으로 데이터가 정렬되어 있어야 알고리즘을 사용할 수 있다. binarySearchAsc 함수는 오름차순으로 정렬되어 있는 데이터, binarySearchDesc 함수는 내림차순으로 정렬되어 있는 데이터를 이진탐색하는 함수이다. package sort; import java.util.ArrayList; public class BinarySearch { public static void main(String [] args) { int[] data = new int[]{11, 12, 13, 18, 19, 20, 25, 29, 30, 36}; int[] reverseData = reverseArray(data)..
124 나라 programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 진법 구현과 비슷하다. 다만 예외 사항이 나머지값이 0일 때 몫을 -1해야 된다는점, 효율성 점수가 있다는점이다. package question; public class 나라124 { public static void main(String [] args) { for (int i = 1; i = 3) { int etc = n % 3; n = n / 3; if (etc == 0) { n--; builder.insert(0, "4"); } else { builder.insert(0, etc); } if (n < 3 && n != 0) { builder...
다트 게임 https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 숫자가 0~9라 지레 짐작하고 풀다가 조금 헤맸다. 역시 문제를 꼼꼼히 봐야돼.. public class 다트게임 { public static void main(String[] args) { System.out.println("다트 게임"); // 총 3번의 기회 // 각 기회마다 0점 ~ 10점 // 영역 싱글 1제곱, 더블 2제곱, 트리플 3제곱 // 옵션 스타상 현재 점수 ,바로 전 점수를 각 2배 아차상 당첨시 해당점수를 마이너스 //스타상의 효과는 중첩 가능능 System.out.println(solution("1S2D*3T..
카카오 문자열 압축 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 레벨 2인데 생각보다 어려웠다. 문제 자체가 잘 이해가 안가더라. aabbaccc 예제를 2a2ba2cc이지 왜 2a2ba3c냐고 속으로 엄청 화냈음ㅋㅋㅋ 근데 자세히 보니까 스플릿 기준 1이어서 2a2ba3c가 되는거더라 그리고 앞에 앞에 숫자를 넣는것보다 뒤에 숫자를 넣는게 += 할 때 더 좋을것이라 판단했다. package question; impo..