본문 바로가기

Algorithm

(61)
[프로그래머스] 종이접기 - Java https://programmers.co.kr/learn/courses/30/lessons/62049 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr 규칙찾는 문제 꿀잼! n result 1 0 2 0,0,1 3 0,0,1,0,0,1,1 4 0,0,1,0,0,1,1,0,0,0,1,1,0,1,1 일단 result를 보면 중앙의 0을 기준으로 우측 숫자들은 좌측 숫자를 대칭시킨 후 0=>1, 1=>0으로 바꾼 것이다. 그리고 좌측 숫자는 n-1일 때의 result와 동일하다. 이를 이용해서 코드를 짜..
[프로그래머스] 베스트앨범 - Java https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { HashMap g1 = new HashMap(); for (int i = 0; i < genres.length; i++) { g1.put(genres[i], g1.getOrDefault(genr..
[프로그래머스] 전화번호 목록 https://programmers.co.kr/learn/courses/30/parts/12077 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.HashSet; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; HashSet s = new HashSet(); for (String a : phone_book) { s.add(a); } for (String a : phone_book) { for (int i = 1; i < ..
[프로그래머스] 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576/solution_groups?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap hash = new HashMap(); for (String s : completion) { hash.put(..
[프로그래머스] 다리를 지나는 트럭 import java.util.LinkedList; import java.util.Queue; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int time = 0; int sum = 0; Queue bridge = new LinkedList(); Queue wait = new LinkedList(); for (int w : truck_weights) { wait.offer(w); } for (int i = 0; i < bridge_length; i++) { bridge.offer(0); } while (true) { time++; sum -= bridge.poll(); if (!wait...
[프로그래머스] 탑 https://programmers.co.kr/learn/courses/30/lessons/42588 코딩테스트 연습 - 탑 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다 programmers.co.kr import java.util.Stack; class Solution { public int[] solution(int[] heights) { int[] answer = new int[heights.length]; Stack st = new Stack(); for (int i = heights.length - 1; i >= 0; i--) { while (!st...
[2019 카카오] 무지의 먹방 라이브 https://programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (무지는 왜 음식 하나를 100,000,000초동안 먹는가.. 무지는 왜 먹방을 20,000,000,000,000초동안 찍는가..) 쉽게 말해 k초가 지난 후 몇번째 음식을 먹을 차례인지를 묻는 문제 효율성테스트까지 통과하려면 규칙을 잘 찾아서 코딩해야 한다. 키 포인트는 회전판이 한 번 돌면 다시 제자리로 돌아오므로 이렇게 한 번 돌아서 다시 제자리로 오는 시간들을 k에서 모두 뺀 후 남은 k를 가지고 턴을..
[2019 카카오] 후보키 https://programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 카카오는 순열, 조합 문제를 좋아하는 것 같다. 아직 이런 유형의 문제가 약해서 ㅠ_ㅠ 이 문제도 앞쪽 문제인데 푸는데 한참 걸렸다. 백준에서 비슷한 유형을 많이 풀어봐야겠다! 모든 가능한 속성의 조합을 구하기 위해 비트연산자를 사용했다. 배열 v는 후보키가 될 수 있는 비트 상태를 저장하는 배열로, 배열 v에 속성 조합의 부분집합이 들어있는지 검사하는 함수로 exist 함수를 만들었다 (존재하면 1, 없으면..