본문 바로가기

전체 글

(197)
Collections Collections란? Arrays가 배열과 관련된 메서드를 제공하는 것처럼, Collections는 컬렉션과 관련된 메서드를 제공한다. 모든 메서드가 static으로 import static java.util.Collections.*; 선언을 해주면 메서드만 적어서 사용 가능하다. 아래 예제를 통해 다양한 메서드를 살펴보자. addAll(list, 1, 2, 3, 4, 5) : list에 1, 2, 3, 4, 5를 추가 rotate(list, 2) : list의 요소를 오른쪽으로 두 칸씩 이동 swap(list, 0, 2) : list의 첫 번째와 세 번째를 교환 shuffle(list) : 저장된 요소의 위치를 임의로 변경 (실행할 때마다 위치가 바뀜) sort(list) : 오름차순 정렬 sort..
[프로그래머스 Java] 같은 숫자는 싫어 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr ⏱소요 시간 - 정확성 20분 / 효율성 40분 = 1시간 🔑해결 방법 처음으로 효율성까지 검사하는 문제였다. 처음 아니랄까봐 효율성에서 모두 실패를 해서 질문하기에서 힌트를 얻어 문제를 다시 풀었다. 첫 번째 제출한 코드는 1. arr[]에 있는 값들을 모두 list에 넣는다. 2. list의 기준 값과 바로 다음 값을 비교하면서 같으면 list에서 기준 값을 삭제한다. 그리고 for문을 다시 처음부터 반복한다. 3. for문이 마무..
[프로그래머스 Java] 가운데 글자 가져오기 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr ⏱소요 시간 - 14분 🔑해결 방법 문자열의 길이가 짝수냐 홀수냐에 따라 다르므로 분기 처리를 해줬다. 그리고 String의 substring() 메서드를 통해 원하는 위치의 문자열만 뽑아왔다. String substring(int begin, int end) : begin부터 end-1까지의 문자열을 가져온다. (문자열의 위치는 0부터 시작함) end 위치는 가져오지 않는다는 특성으로 한 글자만 가져올 때도 substri..
[프로그래머스 Java] 3진법 뒤집기 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr ⏱소요 시간 - 이해하는데 1시간 15분 🔑해결 방법 진법을 다 까먹어서 구글링을 해서 풀었다. 진법 변환부터 정리하자면 다음과 같다. 다른 진법간의 변환도 이와 다르지 않다. 또, 새롭게 알게된 메서드들이 있다. 첫 번째. Integer.toString(int i, int radix) : i를 주어진 진법(radix)의 문자열로 변환 두 번째. Math.pow(double a, double b) : a의 b제곱을 ..
[프로그래머스 Java] 2016년 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr ⏱소요 시간 - 35분 🔑해결 방법 사실 이 문제는 요일을 구하는 복잡한 알고리즘이 이미 존재할 것 같아서 구글링해서 코드를 짰다.ㅎㅎ 찾아보니 별게 없어서 스스로 생각해볼껄... 후회가 되는 문제. 다음에 꼭 다시 풀어보자! 규칙을 한 번에 알 수 없는 문제의 경우, 쉽게 알 수 있는 예로부터 수식을 얻어내면 간편하다. 1월 8일, 9일 정도면 금요일, 토요일이라는걸 바로 알 수 있으니 해당 예시로 아래 수식을 계산해보자..
[프로그래머스 Java] K번째 수 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr ⏱소요 시간 - 1시간 5분 🔑해결 방법 이차원 배열과의 관계를 찾아내야 해서 엄~청 헷갈렸던 문제 이차원 배열의 요소의 인덱스를 적어놓고, 인덱스와 매치하면서 for문을 차분히 돌려보면 규칙을 발견할 수 있다. 항상 이차원 배열만 만나면 뇌가 굳는 것 같다ㅠㅠ 평정심을 갖고 문제를 풀어야겠다. 문제는 다음과 같은 흐름으로 전개된다. 1. 주어진 배열을 i번째 숫자 ~ j번째 숫자까지 잘라 array2[] 배열에 저장한다. 2. 자른 배열을 정렬한다. 3. 정렬된 배열에서 k번째 수를 answer[] 배열에 저장한다. 이러한 흐..
[프로그래머스 Java] 체육복 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr ⏱소요 시간 - 25분 🔑해결 방법 두 번째 풀어서 빨리 풀었던 문제다. 체육복을 빌려주는 로직을 처리하기 전, 여벌이 있는데 도난당한 학생들을 먼저 처리해주기 위해 첫 번째 이중 for문을 실행하였다. 여기서 포인트는 lost[]와 reserve[]에서 겹치는 학생은 모두 두 배열에서 제외시켜야 한다는 점이다. 이 점을 간과해서 reserve[i] = -1을 빼먹고 첫 번째 제출해서 틀렸다ㅠㅠ (이미 도난당했으니 빌려줄 수도 없기 때문에 빼줘야 함) 그리고 0이..
HashMap HashMap이란? 키(Key)와 값(Value)을 묶어서 하나의 데이터(Entry)로 저장 순서 X / 키는 중복 X / 값은 중복 O 만약, 순서를 유지하고 싶다면 LinkedHashMap을 사용해라. 해싱 기법을 사용하기 때문에 많은 양의 데이터를 검색하는데 유리 왜 빠르다고 하는지? 배열의 인덱스를 값으로 출력하여 찾기 쉬움. 서랍 정리 해놓았다고 생각하자. 예를 들어, 주민번호 880101-2xxxxxx의 사람의 정보가 담긴 서랍을 찾아야 한다고 가정하자. 880101-2xxxxxx이 해시 함수를 거쳐 8이라는 인덱스를 출력했다면, 그 8이라는 인덱스만 찾으면 되므로 빠르게 찾을 수 있다. 아이디와 비밀번호를 저장하고 출력하는 예제 아이디를 key, 비밀번호를 value로 저장 put(Objec..