본문 바로가기

전체 글

(894)
[JAVA] 프로그래머스 - 정수 제곱근 판별 https://school.programmers.co.kr/learn/courses/30/lessons/12934 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    정답  class Solution { public long solution(long n) { long answer = 0; if(Math.pow((int)Math.sqrt(n),2)==n) { answer = (long)Math.pow(Math.sqrt(n)+1,2); } else ..
[JAVA] 프로그래머스 - 정수 내림차순으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/12933 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     정답   import java.util.Arrays;class Solution { public long solution(long n) { long answer = 0; StringBuilder sb = new StringBuilder(); String s = String.valueOf(n); String str..
[JAVA] 프로그래머스 - 자연수 뒤집어 배열로 만들기 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   정답  class Solution { public int[] solution(long n) { String s = String.valueOf(n); //12345 int[] answer = new int[s.length()]; int idx = 0; for(int i=s.length()-1; i>=0; i--) { ..
[자바 알고리즘 인터뷰] ch 11 해시 테이블 (5) 완주하지 못한 선수 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr      풀이 1) 해시 테이블을 이용한 풀이  - 참여한 선수 배열에서 완주한 선수 배열을 제외하면 1명이 남으며, 이 값을 찾아내는 문제다. - 동명이인이 등장할 수 있으므로, 이름을 키로 인원을 값으로 한 해시 테이블로 처리하여 동명이인인 경우에는 해당 키의 값을 +1 해준다.  - 그런 다음 완주한 선수의 이름을 추출해 해시맵에서 하나씩 삭제하면 된다. 값을 -1 하다가 만약 1인 경우 해시맵..
[자바 알고리즘 인터뷰] ch 11. 해시 테이블 (4) 상위 k빈도 엘리먼트 https://leetcode.com/problems/top-k-frequent-elements/description/ - 빈도순으로 k개의 엘리먼트를 추출하라   풀이 1) 빈도수를 저장하고 빈도순으로 엘리먼트 추출  - 각 엘리먼트의 빈도를 추출하고 이를 빈도순으로 저장하거나 정렬한 다음, k번만큼 추출하면 문제를 풀이할 수 있다 . - 각 엘리먼트의 빈도 추출- 입력값 nums를 반복하며 빈도수를 저장할 해시맵 frequencyMap을 선언하고 여기에 빈도를 저장한다. - 처음 빈도를 계산한다면 0으로, 기존에 값이 있다면 그 값을 가져오고 모두 +1을 한다.  //각 엘리먼트의 빈도수를 저장할 해시맵 선언, 엘리먼트=> 빈도수Map frequencyMap = new HashMap();//각 엘리먼..
[자바 알고리즘 인터뷰] ch 11. 해시 테이블 (3) 중복 문자 없는 가장 긴 부분 문자열 https://leetcode.com/problems/longest-substring-without-repeating-characters/description/  - 중복 문자가 없는 가장 긴 부분 문자열(Substirng)의 길이를 리턴하라   풀이 1) 슬라이딩 윈도우와 투 포인터로 크기 조절  - 슬라이딩 윈도우로 한 칸씩 우측으로 이동하면서 윈도우 내에 모든 문자가 중복이 없도록 투 포인터로 윈도우 크기를 조절하면서 풀이해보면 다음과 같다.  - 슬라이딩 윈도우의 각 단계별로 중복 문자가 없는 윈도우의 최대 길이를 순서대로 표시했다.    - 먼저 투 포인터로 문제를 풀이하되, 포인터 2개 모두 왼쪽에서 출발한다. - 각각 왼쪽 시작점에서 출발해 두 번째 포인터(right변수)는 다음과 같이 현재..
[자바 알고리즘 인터뷰] ch 11. 해시 테이블 (2) 보석과 돌 https://leetcode.com/problems/jewels-and-stones/description/  - J는 보석이며, S는 갖고 있는 돌이다. S에는 보석이 몇개나 있을까? 대소문자는 구분한다.   풀이 1) 해시 테이블을 이용한 풀이  - 갖고 있는 돌 stones의 엘리먼트 각각의 개수를 모두 헤아린 다음, jewels의 각 엘리먼트를 키로 하는 각각의 개수를 합산- 먼저 freqs라는 해시 맵을 선언Map freqs = new HashMap(); - 돌의 모음인 stones를 문자 단위로 하나씩 분리해 반복한다. 만약 처음 등장한 문자라면 1을 선언하고, 기존에 있던 문자라면 1을 더한다. //돌(S)의 빈도수 계산for(char s : stones.toCharArray()){ /..
[JAVA] 프로그래머스 체육복 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     문제 풀이  - 그리디(greedy) 알고리즘은 최적해를 구하는 방법으로 여러 경우 중 하나를 결정할 때 그 순간이 최적이라고 생각되는 것을 선택하는 방식- 때문에 항상 최적해를 보장해주진 않지만 대부분의 경우 최적해를 찾기 적합한 알고리즘이다.  체육복 프로그래머스 java 자바 문제 풀이 (youtube.com)  - 여벌의 체육복을 최대한 빌려준 뒤 체육복을 가진 학생 수를 구하라 - 여..