[프로그래머스] 두 큐 합 같게 만들기 - Java(자바)
·
자바/코딩테스트
문제 이해길이가 같은 큐 두개가 주어진다.큐에 들어간 원소의 합이 같아지게 pop,insert의 작업을 한다.작업의 횟수가 최소값인 경우를 구해야 한다.원소의 값은 10^9 까지이고 원소의 개수는 30만개로 sum을 구하기에는 스택오버 플로우가 일어나기때문에 sum 타입을 long으로 해준다.최소횟수를 구하기 위해서 주어진 두 큐의 합을 비교한다.                                                                                            큰합계(큐) -> 작은합계(큐) 원소를 큰합 큐에서 poll 작은합 큐로 원소를 insert위 처럼 큐를 pop, insert 하면서 두큐의 합계가 같아 질때까지 반복한다.예#3 번처럼 원소의 합이 ..
[프로그래머스] 거리두기 확인하기 - Java(자바)
·
자바/코딩테스트
문제 이해5X5 대기실이 5개가 있다.거리두기를 잘지켜지는지 확인해야한다.거리두기는 맨해튼 거리 2이하로 앉지 말아야 한다.응시자가 앉아 있는 자리 사이에 파티션으로 막혀있을 경우 맨해튼 거리 2이하도 허용된다.맨해튼 거리 2이하를 생각하였을때 P좌표에서 상하좌우를 총 2번 이내로 움직였을때 또다른 P가 있다면 맨해튼 거리 2이하다.해당 P1좌표가 갈수 있는 위치는 아래 표와 같다.P1좌표를 상하좌우 표시를 하고 P2좌표를 상하좌우 표시하면 중첩되는곳이 있다면 거리두기 실패이다.중첩을 찾아내기 위해 P좌표가 방문한곳은 visit 배열로 관리하였다.P1 갈 수 있음P1 갈 수 있음P1 갈 수 있음 P1 갈 수 있음P1  || P2 갈수 있음P1 갈 수 있음 P2 갈수 있음 P1 갈 수 있음P1 갈 수 있음..
[프로그래머스] 괄호 변환 -Java(자바)
·
자바/코딩테스트
1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다. 4-3. ')'를 다시 붙입니다. 4-4. u의 첫 번째와 마지막 문자를 제거하고,..
[프로그래머스] 오픈채팅방 - Java(자바)
·
자바/코딩테스트
문제 이해 오픈채팅방에 들어오거나 나갈때 문자열로 기록이 된다. 오픈채팅방을 나갔다가 같은 아이디로 들어왔을때 닉네임이 변경되어있으면 기록된 문자열에 닉네임도 바뀌어야한다. 채팅방을 나가지 않고 닉네임을 변경하였을 경우도 문자열의 닉네임이 바뀌어야한다. 배열의 길이는 100,000 건으로 for문 내에 함수를 사용하거나 메모리 사용량이 적은걸로만 사용해야한다. map을 생성하고 key = id , value = 닉네임 형태로 배열전체를 돌면서 설정한다. map에 id로 할당된 닉네임이 최종 닉네임이다. import java.util.*; class Solution { public String[] solution(String[] record) { Map map = new HashMap(); List res..
[프로그래머스] [3차] 압축 - Java(자바)
·
자바/코딩테스트
문제 이해 A - Z 까지 대문자 사전이 1 ~ 26까지 색인번호를 가지고 있다. 문자열에서 첫글자 다음글자를 자르고 사전과 비교하였을때 사전에 미존재하면 색인번호를 올려서 새로 추가한다. 사전에 없는 문자가 나올때까지 계속 자른다. 문자열은 1000글자 이하로 이중for문을 사용하였다. map에다 A-Z를 키로 색인번호를 value로 생성, 추가되는 사전단어가 나올때마다 색인번호를 올려서 추가 색인번호가 신규 추가가 되면 기존에 사용한 영문자는 사용하면 안된다. cnt에 사용한 영문자의 수를 체크하여 사용못하게 넘어간다. 영문자 tmp 가 msg의 마지막 영문자를 사용하고 해당 문자열이 키에 존재한다면 문자열의 색인번호를 집어넣고 for문을 끝낸다. import java.util.*; class Sol..
[프로그래머스] k진수에서 소수 개수 구하기 - Java(자바)
·
자바/코딩테스트
문제 이해 정수 n을 k진수로 변환시켜야 한다. n은 1,000,000 으로 int형으로 처리 불가 long 타입으로 변환처리 해야한다. String 변수 temp에 k진수로 바꾸어서 만든다. 0이 앞뒤로 존재하면 소수인지 체크해야함으로 split("0") 으로 배열 생성 0000 0이 연속으로 나오면 배열에 "" 공백이 들어감으로 공백체크 필수 소수 판단하는 함수에도 long타입으로 변경후 소수 판단 class Solution { public int solution(long n, int k) { int answer = 0; String temp = ""; while(n > 0){ temp = Long.toString(n%k) + temp; n /= k; } String[] num = temp.split..
[프로그래머스] [1차]뉴스 클러스터링 - Java(자바)
·
자바/코딩테스트
문제 이해 자카드 유사도를 구하고 65536을 곱한 수를 출력해라 자카드 유사도는 두 배열의 교집합/합집합이다. 문자열을 2글자씩 잘라서 넣는데 영문이 아니라면 그 문자는 삭제한다. 교집합을 구할때는 두 배열을 비교하면서 사용한 index인지 check를 통해 확인후 교집합의 개수를 구한다. double 형태로 자카드 유사도가 나오기 때문에 cnt + 0.0을 함으로 형 변환후 자카드 유사도를 구한다. import java.util.*; class Solution { public int solution(String str1, String str2) { int answer = 0; str1 = str1.toUpperCase(); str2 = str2.toUpperCase(); List str1List = ..
[프로그래머스] 튜플 - Java(자바)
·
자바/코딩테스트
문제 이해 특정 튜플을 표현하는 집합이 담긴 문자열이 "{","}"로 표현되어있다. 튜플 안에 집한의 원소의 순서는 바뀌어도 상관없다. 집합의 원소 개수가 answer 배열의 index와 동일하다.(1개 = answer[0], 2개 = answer[1]) 집합 개수에 맞게 오름차순을 해야한다. 집합개수 2개의 경우 (a1, a2) == (a2, a1) 가능하다. 순서 상관없이 튜플이 가능 index = 1 일때 집합의 개수 2개로 위와 같이 존재한다. list.get(0) = a1 이면 list.get(1) = a2, 반대로 list.get(0) = a2 이면 list.get(1) = a1 이 되게끔 만들어야한다. import java.util.*; class Solution { public int[] ..
[프로그래머스] [1차] 캐시 - Java(자바)
·
자바/코딩테스트
문제 이해 LRU(Least Recently Used) 알고리즘으로 캐시에 데이터를 할당할때 캐시가 꽉차면 최근에 사용안한 캐시를 지우는 알고리즘이다. 도시의 이름은 대소문자 가리지 않는다. toUpperCase() 사용 캐시를 List 객체를 사용하여 캐시에 같은 도시명이 존재하면 해당 리스트 index 삭제후 맨뒤에 도시 추가 실행시간 +1 리스트에 존재하지 않으면 실행시간 +5 캐시에 데이터가 존재하는지 확인하는 함수 생성 exitsCache(); import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { int answer = 0; List cache = new ArrayList(); if(ca..
대전집주인
'카카오' 태그의 글 목록