본문 바로가기
728x90
728x90

알고리즘14

소수 판별하는 메서드 (프로그래머스 k진수에서 소수 개수 구하기) https://school.programmers.co.kr/learn/courses/30/lessons/92335# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 풀다보니 다 좋은데 하나가 시간초과가 나온다. 내가하는 소수판별 코드는 2부터 해당수-1 까지 나누어떨어지는 수가 있으면 소수가 아니라는 것인데 이걸 다 반복문으로 돌리자니 오래걸리나보다. 그렇다면 어떻게 하지.. 결국 찾아봤다. 해답은 Math.sqrt(num) 2부터 (int)Math.sqrt(num) 까지 포함해서 나누어 떨어지는 지 확인하고 나누어 떨어지지 않으면 소수이다. // .. 2023. 12. 27.
String.equals와 HashSet contains의 시간복잡도 비교 (프로그래머스 전화번호 목록) https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.HashSet; class Solution { public HashSet set = new HashSet(); public boolean solution(String[] phone_book) { boolean answer = true; for(String number : phone_book){ set.add(number); } for(int i=0;i 2023. 12. 27.
replaceAll() 정규식 훈련 [JAVA 알고리즘] https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 풀면서 replaceAll에 대해 간단히 알게된 사실을 기록해보기로했다. replaceAll 아래처럼 문자열이 주어졌을 때 String s ="{{2},{2,1},{2,1,3},{2,1,3,4}}"; { 와 } 를 없애기 위해 replaceAll을 했는데 이 때 다른 문구와 달리 특수문구는 [] 사이에 적는걸 볼 수 있다. System.out.println("시작"+s.replaceAll(.. 2023. 12. 18.
우선순위큐(Priority Queue) [자료구조] ( 프로그래머스 LV2 .더맵게) https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자 이제 Queue는 아는데 위 문제와 같이 일정 기준으로 정렬을 계속해서 해줘야 하는 경우(우선순위가 존재하는 경우) Priority Queue를 써주면 더 편리하게 코드를 짤 수 있다. 우선순위 큐(Priority Queue) Queue는 부가적인 기능 없이 오직 먼저 들어온 데이터가 먼저 나가는 First In First Out (FIFO) 구조로 되어있다. 하지만 우선순위 큐는 들어간 순서.. 2023. 12. 5.
탐욕 알고리즘 Greedy Algorithm [문제해결전략] ( 프로그래머스 요격 시스템) 탐욕 알고리즘(Greedy Algorithm)이란? 현재 상태에서 최선의 선택을 하며 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘 문제를 해결하는 단계 1. 선택 절차 : 현재 상태에서의 최적의 해답을 선택한다. 2. 적절성 검사 : 선택된 해가 문제의 조건을 만족하는지 검사한다. 3. 원래의 문제가 해결되었는지 검사하고 해결되지 않았다면 선택절차로 돌아가 위 과정을 반복한다. 탐욕 알고리즘은 요격시스템을 풀면서 알게되었다. 처음에는 도통 어떻게 푸는지 몰랐는데 어떻게 푸는지 알게되면 그때부터 쉽게 풀리는 듯 하다. 프로그래머스 - 요격 시스템 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. .. 2023. 12. 2.
HashSet [자료구조] https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀면서 내가 이제까지 안 지식으로 풀기 어렵다는 생각이 들었다. 이제까지 ArrayList, Stack, HashMap , replaceAll 정규식 등 문제를 풀어가면서 새로운 자바 클래스들을 공부하고 그 도구를 활용해서 알고리즘을 풀었다. 하지만 이 문제는 안풀리는것이다 ㅠㅠ 그래서 결국 다른 사람들이 어떻게 풀었는지를 확인했더니 대부분 HashSet으로 풀었다. 아직 그에관한 지식.. 2023. 11. 15.
StringBuilder [자바] (프로그래머스 -코드 처리하기) https://school.programmers.co.kr/learn/courses/30/lessons/181932 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일단 내가 푼 방법 class Solution { public Stack stack = new Stack(); public String solution(String code) { String answer = ""; boolean modeZero = true; for(int i=0;i 2023. 11. 3.
HashMap [자료구조] (프로그래머스 - 최빈값 구하기) 프로그래머스 - 최빈값 구하기 1. 1000개의 숫자의 빈도수를 저장하기위해 1000 길이를 갖는 배열을 만들어서 인덱스에 빈도수를 저장하는 방식으로 풀었다. 2. 가장 큰 빈도수가 중복되면 안되기에 처음에 제일큰 빈도수와 해당 숫자를 구하고 3. 그 빈도수를 -1로 지정하고 그 다음으로 큰 빈도수를 구했다. class Solution { public int[] idxnum; public int solution(int[] array) { int answer = 0; idxnum = new int[1000]; for(int a : array){ idxnum[a]++; } int max1cnt = 0; int max1num = 0; int max2cnt = 0; int max2num = 0; for(int .. 2023. 11. 2.
TreeMap [자료구조] ( 프로그래머스 - 전국 대회 선발 고사) https://school.programmers.co.kr/learn/courses/30/lessons/181851 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘을 풀다보니 프로그래머스 - 전국 대회 선발 고사에서 두개의 값을 쌍으로 저장하면 쉽게 풀릴 수 있다고 생각했다. 그래서 TreeMap에 대해 좀 더 자세히 알아보고 내것으로 만들려고 찾아보았다. TreeMap 이진트리를 기반으로한 Map 컬렉션이다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면, TreeMap은 키와 값이 저장된 Map, .. 2023. 11. 1.
728x90
728x90