목록개발공부/알고리즘 (15)
발전하는 개발자가 되자
프로그래머스 알고리즘 (java) 소수 찾기 프로그래머스 (소수 찾기) 코드 리뷰 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하는 문제입니다. 조건 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. ex) 013, 031, 3, 1, 10, ... 등 뽑을 수 있는 모든 경우가 가능 풀이 방향 저는 맨 처음 조합으로 풀면 될 것이다 생각했습니다. 그래서 조합을 구하는 제귀 메소드와 소수를 판별하는 메소드를 조합하면 될 것 이라 예상했습니다. 하지만 조합으로 풀면 순서를 생각 하지 ..
프로그래머스 알고리즘 (java) 전화번호 목록 프로그래머스 (전화번호 목록) 코드 리뷰 조건 String 배열의 요소가 다른 요소에 접두사면 false 아니면 true 접두사 확인은 String 의 startWith(string) 메소드를 활용 하면 쉽습니다. public boolean solution(String[] phone_book) { boolean answer = true; for (int i = 0; i 1) { return fals..
프로그래머스 알고리즘 (java) 모의고사 프로그래머스 (모의고사) 코드 리뷰 조건 각각 찍는 패턴이 있다. 결과는 가장 많이 맞은 수포자들의 번호를 리턴한다. 저는 그냥 반복문을 사용해서 다 찾아보면 될거 같았습니다. public int[] solution(int[] answers) { int[] player1 = {1, 2, 3, 4, 5};//5 int[] player2 = {2, 1, 2, 3, 2, 4, 2, 5};// 8 int[] player3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};// 10 int[] answer = new int[]{0,0,0}; int maxNum = 0; List countNum = new ArrayList(); for (int i = 0; i <..
프로그래머스 알고리즘 (java) 완주하지 못한 선수 프로그래머스 (완주하지 못한 선수) 코드 리뷰 맨처음 문제를 보고 참가선수를 리스트에 넣고 완주한 사람 다 리무브로 지워 마지막 남는 선수를 리턴시켰습니다.. 그런데 효율성 태스트에서 통과가 안됬습니다. 그후 고민하다 둘다 리스트에 담고 sort해서 인덱스 끼리 비교 다른 string 일 때 return 시켜 해결했습니다. public String solution(String[] participant, String[] completion) { String answer = ""; List runUsers = new ArrayList(Arrays.asList(participant)); List finishUsers = new ArrayList(Arrays..
프로그래머스 알고리즘 (java) 베스트앨범 프로그래머스 (베스트앨범) 코드 리뷰 저는 먼저 음악으로 클래스를 나누고 장르로 그 클래스들을 감싸서 내림차순으로 정렬 시켰습니다. 객체를 두개로 나누고 override 메소드까지 구현하니 조금 코드 길이가 길어진거 같습니다. import java.util.*; public class BestAlbum { public int[] solution(String[] genres, int[] plays) { int[] answer = {}; List answerList = new ArrayList(); List genresList = new ArrayList(); for (int i = 0; i < genres.length; i++) { if (!genresList...
프로그래머스 알고리즘 (java) 위장 프로그래머스 (위장) 내가 작성한 코드 set 으로 카탈로그를 뽑아내고 카탈로그별 숫자를 구해 각각 곱해줘 경우의 수를 구했다. set을 안쓰고 리스트를 써도 될 것 같다. public class Camouflage { public int solution(String[][] clothes) { int answer = 1; Set category = new HashSet(); for (String[] clothe : clothes) { //카태고리가 없으면 카태고리 생성 if (!category.contains(new Category(clothe[1]))) { category.add(new Category(clothe[1])); } else { // 있으면 그 카태고..
프로그래머스 알고리즘 (java) 가장 큰 수 프로그레머스 가장 큰 수 내가 작성한 코드 문자열로 변환하고 sort 해서 다 더해 출력함 다른 사람들도 비슷한 방식으로 푼거 같다. public String solution(int[] numbers) { String answer = ""; List stringList = new ArrayList(); for (int anInt : numbers) { stringList.add(String.valueOf(anInt)); } stringList.sort(((o1, o2) -> (o2 + o1).compareTo(o1 + o2))); for (String s : stringList) { answer += s; } return answer.charAt(0) == ..