Free Lines Arrow
본문 바로가기
728x90

Algorithm/프로그래머스 알고리즘26

[프로그래머스] 전화번호 목록 문제 분석 해쉬 문제이지만 굳이 해쉬로 풀어도 되지 않을것 같았다. 1. 2중 for문으로 푼다. - 효율성에서 탈락 2. 사전순으로 정렬해서 푼다. - 제일 깔끔했다. 사전순으로 정렬하면 참 쉽다 - 예를 들어서 사전순으로 정렬한다면 다음과 같다. - 가나 가나다 나다 나다라 나다라마바사 그럼 앞 뒤 만 비교해주면 끝난다. 구현 import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; Arrays.sort(phone_book); for(int i = 0; i < phone_book.length-1; i++) { if(phone_book[i+1].indexOf(phone_.. 2021. 8. 9.
[프로그래머스] 카카오프렌즈 컬러링북 문제 분석 완전탐색 문제이다. 그림 색은 배열의 숫자로 구분이 된다. 같은색이더라도 연결이 안되어 있으면 다른 영역이라고 판단한다. 무슨말인가? 그림으로 보면 쉽다. 탐색하기 picture[0][0] 의 값은 1 이다. 그럼 picture[0][0] 부터 출발한다. 1값과 동일한지 체크 하면서 방문한다. 방문을 했으면 방문했다고 체크한다. 1번에 대한 탐색을 완료한다. 그렇게 가다보면 picture[0][1] 이미 방문했으니 넘어가고 새로운 값 2가 나타나면 2값을 기준으로 다시 탐색한다. 구현 class Solution { private int mNumberOfArea; private int mMaxSizeOfOnerArea; //위 아래 왼쪽 오른쪽 탐색방향 정의 private int []dirx =.. 2021. 8. 4.
[프로그래머스] 입국심사 문제 분석 해당 문제는 이분법으로 분석이 좀 필요하다. 심사위원은 여러명이고 심사를 최대한 빨리 끝나는 시간을 반환해야 되는 문제이다. 1. 최소시간과 최대시간의 범위를 구한다. 2. 최소시간과 최대시간의 중간 시간를 구한다. 3. 중간시간에서 얼마나 처리 할수 있는지 계산한다. 4. 중간시간에 해결이 됐다면 더 작은 범위의 시간으로 계산한다. 5. 중간시간에 해결이 안됐다면 더큰 범위의 시간을 찾는다. 6. 이렇게 최소 시간과 최대 시간의 범위를 줄여 나가면서 최소와 최대가 동일하거나 같은면 종료한다. 구현 import java.util.*; class Solution { public long solution(int n, int[] times) { long answer = 0; Arrays.sort(t.. 2021. 7. 28.
[프로그래머스] 짝지어 제거하기 문제 분석 반복적으로 i 번째 텍스트와 i+1 텍스트를 비교해서 동일 하다면 Java 의 string의 remove를 써줘서 제거해 나간다. * 하지만 시간 초과가 발생하여 고민을 하다가 스택으로 구현을 해보았다. 통과가 되었다. 구현1 효율성 실패 class Solution { public int solution(String s) { int answer = -1; boolean flag = true; String tmpString = s; while(flag) { flag = false; for(int i = 0; i 2021. 7. 26.
728x90
반응형