replaceAll() 정규식 훈련 [JAVA 알고리즘]
·
알고리즘/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("[{]","..
우선순위큐(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) 구조로 되어있다.하지만 우선순위 큐는 들어간 순서에 상관없..
탐욕 알고리즘 Greedy Algorithm [문제해결전략] ( 프로그래머스 요격 시스템)
·
알고리즘/문제 해결 전략
탐욕 알고리즘(Greedy Algorithm)이란?현재 상태에서 최선의 선택을 하며 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘 문제를 해결하는 단계1. 선택 절차 : 현재 상태에서의 최적의 해답을 선택한다.2. 적절성 검사 : 선택된 해가 문제의 조건을 만족하는지 검사한다.3. 원래의 문제가 해결되었는지 검사하고 해결되지 않았다면 선택절차로 돌아가 위 과정을 반복한다. 탐욕 알고리즘은 요격시스템을 풀면서 알게되었다.처음에는 도통 어떻게 푸는지 몰랐는데 어떻게 푸는지 알게되면 그때부터 쉽게 풀리는 듯 하다. 프로그래머스 - 요격 시스템https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스코드 중심의 개발자 채용. 스택 기반의 ..
HashSet [자료구조]
·
알고리즘/자료구조
https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제를 풀면서 내가 이제까지 안 지식으로 풀기 어렵다는 생각이 들었다.이제까지 ArrayList, Stack, HashMap , replaceAll 정규식 등 문제를 풀어가면서 새로운 자바 클래스들을 공부하고 그 도구를 활용해서 알고리즘을 풀었다. 하지만 이 문제는 안풀리는것이다 ㅠㅠ 그래서 결국 다른 사람들이 어떻게 풀었는지를 확인했더니 대부분 HashSet으로 풀었다. 아직 그에관한 지식이 없기..
StringBuilder [자바] (프로그래머스 -코드 처리하기)
·
알고리즘/Java 알고리즘
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;iString끼리의 연결의 성능저하 알고리즘 문제를 풀다보니 문자열을 계속 ..
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; in..
TreeMap [자료구조] ( 프로그래머스 - 전국 대회 선발 고사)
·
알고리즘/자료구조
https://school.programmers.co.kr/learn/courses/30/lessons/181851 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 알고리즘을 풀다보니 프로그래머스 - 전국 대회 선발 고사에서 두개의 값을 쌍으로 저장하면 쉽게 풀릴 수 있다고 생각했다. 그래서 TreeMap에 대해 좀 더 자세히 알아보고 내것으로 만들려고 찾아보았다. TreeMap 이진트리를 기반으로한 Map 컬렉션이다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면, TreeMap은 키와 값이 저장된 Map, En..
[알고리즘 지식] 최대공약수(GCD) 최소공배수(LCM) 구하기
·
알고리즘
알고리즘을 풀다가 최대공약수를 구해야하는 상황이 있었다.그림을 그려서 최대공약수를 구할 수 있지만 코드로 어떻게 풀어내는지는 다른 문제였다.그렇다면 코드로 어떻게 풀 수 있을까?  유클리드 호제법2개의 수의 최대공약수를 구하는 알고리즘이다.원리는 다음과 같다.자연수 a,b에 대해서 a를 b로 나눈 나머지를 r이라 한다면 a,b의 최대공약수와 b,r의 최대공약수는 같다. 이 성질에 따라 a를 b로 나눈 나머지 r을 구하고, b를 r로 나눈 나머지 r'을 구한다.  나머지가 0이 될때 나눈 수가 a,b의 최대공약수가 된다.  유클리드 호제법으로 최대 공약수를 구한 다음, 최소 공배수는 다음 식에 의해 구할 수 있다.숫자가 두개일 때 최소 공배수 : (a ✕  b) / (최대 공약수) 숫자가 두개인 경우 최대..