목록Java Note/Algorithmus (48)
럿고의 개발 노트
[프로그래머스] 코딩테스트 연습 문자열 내 마음대로 정렬하기 간략한 문제 풀이 sort메소드는 앞글자부터 차례로 비교하기 때문에, 비교할 문자를 맨 앞에 넣으면 그 값에 맞춰서 정렬을 할 것입니다. 사실 같은 문자열이 여럿 일 경우 사전순으로 앞선 문자열이 앞쪽에 위치한다는 제한 조건이 있었기 때문에 가능했습니다. 최근 풀었던 알고리즘 문제중에 시간이 걸렸는데, 맨처음에 생각한 방법은 compare()메소드를 이용하여 값을 하나씩 비교 하려고 했는데, 그러면 구현할 것이 너무 많아서... 다시 생각했습니다! github 문제 및 풀이 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/5plj8/btqA2PbnYqs/6o0s7lXLdl7rqfo35VnpbK/img.png)
[프로그래머스] 코딩테스트 연습 두 정수 사이의 합 간략한 문제 풀이 어렵지 않은 문제였다. Stream을 배워서 Stream을 사용해서 풀어봤는데, 효율성이 더 떨어지는것 같다... 그저 '*'다섯개 찍는 코딩을 초보자들은 for문을 사용하고, 실력자들은 출력문으로 그냥 한줄에 끝낸다고 하는데, 이번 문제를 풀면서 그 느낌을 받은 것 같다. 그저 반복문이 좋지 않다는 생각을 버리자! for문 github Stream github 문제 및 풀이 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은..
[프로그래머스] 코딩테스트 연습 나누어 떨어지는 숫자 배열 간략한 문제 풀이 크게 어려움 없는 문제였다. 다른사람 풀이를 봤는데, Java Stream, 람다를 이용해서 한줄에 끝냈는데, 엄청나게 부러운 실력이다..ㅠㅠ Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray(); github문제 및 풀이 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 ar..
[프로그래머스] 코딩테스트 연습 같은 숫자는 싫어 간략한 문제 풀이 두 값을 비교해서 다르다면, 그 값을 넣어서 중복값을 제거하는 방식 문자열 압축과 비슷하지만, 문자열 압축의 가장 기초적인 알고리즘이지 않을까 생각한다. 크게 어려운 부분은 없었던 문제였다. 문제 및 풀이 문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] ..
[프로그래머스] 코딩테스트 연습 가운데 글자 가져오기 간략한 문제 풀이 String Class의 subString()메소드를 배울 수 있는 문제 인 것 같습니다. 문자열을 자를 수 있는 것으로 수학적으로 조금만 생각해보면 풀수 있었습니다. 더 간단하게 푸신 분들이 많았는데, 저는 가장 기본적으로 생각해서 푼것 같았습니다. 문제 및 풀이 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s return abcde c /** * @ClassName : GetMiddleCharacter * @ProblemName : 가운데 글자 가져오기 * @URL..
[프로그래머스] 코딩테스트 연습 2016년 간략한 문제 풀이 Calendar 클래스를 이용하여 날짜를 검색하여 요일을 출력하는 문제 사실, 월이 1 ~ 12가 아닌, 0 ~ 11이다 보니, 그 부분을 알수 있었다. set()메서드에 넣을때 따라서 month인자값에 넣을때 a-1로 했다. 날짜 클래스를 쓸수 있는 좋은 문제였던 것 같다. Calendar Class Github 문제 및 풀이 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, ..
[프로그래머스] 코딩테스트 연습 체육복 간략한 문제 풀이 중복값 제거와 검색을 사용해서 풀었긴 했는데, 조금 어려웠습니다. 이 알고리즘 문제는 탐욕법(Greedy)를 사용하는 문제입니다. 탐욕법(Greedy) 자세히 보기 또한 자바 API은 Math.abs()메소드에 대해서 배울 수 있었습니다. 절대값을 return해주는 메소드로, 알고리즘 문제에 처음으로 도입해봤습니다. 복잡해 보이기도하고, 실제로 무식하게 접근하는 방식이여서... 차후 변경해봐야 될것 같습니다 ㅠㅠ Math.abs() 문제 및 풀이 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생..
[프로그래머스] 코딩테스트 연습 K번째수 간략한 문제 풀이 이번문제를 풀면서 배운 점은 Arrays.copyOfRange()메소드 입니다. 인자로 복사할 배열과 범위를 받아서 배열을 새로 만들어 주는 메소드입니다. 문제의 목적은 정렬이였습니다. 개인적으로 나중에 정렬 알고리즘을 한번 직접 구현봐야 되겠습니다. Arrays.sort()메소드는 배열을 정렬해주는 메소드입니다. Arrays 메소드 효율성이 너무 떨어지네요. 알고리즘 문제를 풀면서 효율성도 생각을 해야 되는데, 효율성을 높일 수 있는 방법을 연구해야 되겠습니다 ㅠㅠ 문제 및 풀이 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3..
[프로그래머스] 코딩테스트 연습 모의고사 간략한 문제 풀이 수포자1, 2, 3의 답은 일정 패턴을 가지고 있습니다. 일정 패턴을 찾아서 계속 비교하면 됩니다. 최대값을 구하기 위해서 최근 공부하고 있는 stream을 사용했습니다. 모의고사 문제의 알고리즘은 완전 탐색입니다. 완전탐색 자세히 보기 처음에 반복문으로 최대값을 찾다가, stream으로도 구할수 있기 때문에 stream으로 변경을 했는데, 둘 중에 뭐가 더 효율성이 좋을지는...ㅎㅎ 효율성이 너무 떨어지네요. 알고리즘 문제를 풀면서 효율성도 생각을 해야 되는데, 효율성을 높일 수 있는 방법을 연구해야 되겠습니다 ㅠㅠ 문제 및 풀이 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. ..