알고리즘30 프로그래머스 귤 고르기 ( LV 2 ) + entrySet() 활용 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr - 귤의 갯수를 가장 적은 가짓수로 담으면 되는 문제이다.- 갯수를 큰거를 기준으로 정렬 후 담으려는 k개 보다 크거나 같으면 그 횟수를 return 시켜주면 된다.- 코드레벨로 구현하면서 Map에 있는 key와 value를 모두 접근이 필요한 상황에 entrySet() 으로 접근이 가능하다는 것을 알았다.- 문제 푸는 방법은 간단하니 entrySet() 접근 방법을 정리하고 마치겠다. * Java Map의 entrySet()이란? - Jav.. 2025. 1. 21. 프로그래머스 : 연속 부분 수열 합의 갯수 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 원형으로 구현된 배열의 모든 연속된 부분 집합의 갯수들을 구하는 문제.* 아이디어는 생각해냈지만 구현 방법에서 막혀서 답을 보았습니다.* 필자의 아이디어 - 우선 Set 자료구조를 사용해서 최종 결과를 반환한다. - Queue 자료구조를 사용해서 길이가 2인 부분 집합의 갯수를 구하려면 2번 pop() 하고 순서대로 2번 push() 하는 방법을 파라미터인 elements 길이만큼 진행하는 것이다. 3일때도 4일때도 마찬가지. - 2번, .. 2025. 1. 19. 프로그래머스 : 숫자 변환하기 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 문제 딱 보자마자 bfs..? 풀수 있을거 같은데? 생각이 든 문제.* 고민 끝에 bfs 알고리즘으로 풀었지만 예외처리를 안해줘서 틀렸다.* 각 결과마다 +n, *2, *3을 한 값을 Queue에 넣어주면되는데, 예외처리로 y값을 넘기지 않는 선에서 넣어야한다.* 끝이다. 코드로 구현하면 된다. import java.io.*;import java.util.*;class Solution { int answer = 0; boolea.. 2025. 1. 14. 프로그래머스 : 테이블 해쉬 함수 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * LV2 문제. 문제를 집중력있게 꼼꼼히 읽는 연습을 해야겠다. 삼성 코딩테스트에서도 느꼈지만 문제 읽고 정리하는게 반이자 시작이다.* 문제를 요약하자면 2차원 배열 data[][]가 주어지고 Col 값과 Row값 시작값과 끝값이 주어진다.* 처음에 data[][] 배열을 Col값을 기준으로 오름차순 정렬을 해준다.* 만약에 Col값 기준으로 두 값이 같다면, 첫번째 원소값으로 내림차순 정렬하면 된다. -> 사실 위 내용이 문제의 전부라고.. 2025. 1. 13. 프로그래머스 : 뒤에 있는 큰수 찾기 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr- 문제는 간단하다. 배열의 모든 원소를 탐색하는데 각원소의 가장 가까운 원소중에, 가장 큰 원소를 answer[] 배열에 넣어서 반환하면 끝.- 완전탐색으로 문제를 해결하면 마지막 4문제에서 시간초과가 나는데 최적화가 필요하다.- Stack을 사용해서 뒤에서부터 단일 순회 방식을 사용하면 O(n) 시간 복잡도에 끝낼 수 있다. * 핵심 코드만 공유하겠다. for (int i = size - 1; i >= 0; i--).. 2025. 1. 6. BinarySearch에 대해서 * BinarySearch - 업/다운 게임과 유사하게, 찾는값 target을 기준으로 현재 탐색값이 target보다 작으면 up.반대로 현재 탐색값이 target보다 크면 down을 함으로서 값의 범위를 좁혀나가는 것. private int binarySearch(int target) { int left = 0; int right = arr.length-1; while(left - left는 제일 왼쪽, right는 탐색 해야 할 배열 길이의 -1을 초기화 한다.- while 순환문의 조건을 작성할때 하나의 숫자가 남았을때 확인을 위하여, = 등호를 꼭 작성할 것.- mid 의미 그대로 left와 right의 값을 절반으로 나눔.- 첫 번째로 찾는 값이 나오면 현재 mid(id.. 2024. 11. 24. 이전 1 2 3 4 5 다음