알고리즘/프로그래머스 문제풀이 13

[프로그래머스] 내적 javascript

https://programmers.co.kr/learn/courses/30/lessons/70128 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr [문제풀이] a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 같은 인덱스끼리 곱하고 sum을 구하여라 [코드] function solution(a, b) { let answer =0; for (le..

[프로그래머스] 포켓몬 javascript

https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr [문제 해석] 1. 포켓몬을 n/2 개를 가져갈 수 있다. 2. 가져갈 수 있는 조합 중에 가장 다양한 종류의 포켓몬을 가져가고 싶다. [코드] const solution = nums => { let answer = [...new Set(nums)], limit = nums.length / 2; return answer.length > limit ? limit..

[프로그래머스] 기능개발 javascript

🎇 풀이방법 1. 먼저 배포하는데 걸리는 시간을 배열로 만든다. 100에서 93을 빼고 1로 나눈 값 100에서 30을 빼고 30으로 나눈 값 ( 올림처리) [7, 3, 9] 2. 만든 배열에서 항목 비교 -> 뒤가 앞보다 작으면 그 다음을 비교해야하고 앞이 작으면 answer배열에 넣어야한다. 뒤가 앞보다 작으면 1씩 증가시키고 앞이 비로소 작아졌을때 answer배열에 넣는다. 🎇 코드 function solution(progresses, speeds) { let answer = [0]; let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index])); let maxDay = days[0]; for(le..

[프로그래머스] 완주하지 못한 선수 javascript

🎇 풀이방법 이중 for문을 돌리면 시간초과가 나온다. 그러므로 배열 두개를 sort를 한다. 이중에서 완주하지 못한 선수는 딱 한명이므로 순서대로 배열을 비교하면서 같은 인덱스에 같은 사람이 나오지 않으면 그사람이 완주하지 못한 사람이다. ✨ 코드 function solution(participant, completion) { let answer = ''; participant.sort(); //참가자 배열 정렬 completion.sort(); //완주자 배열 정렬 for(var i=0;i

[프로그래머스] 문자열 압축 javascript

https://programmers.co.kr/learn/courses/30/lessons/60057 🎇 풀이방법 이중 for문을 돌려야한다. "aabbaccc" 이라고 치자. 먼저 문자를 1개 단위로 자른다고 생각해보자. a와 그 다음 a를 비교한다 -> 같다. 그러면 앞에 2를 적는다. a와 b를 비교한다 -> 다르다. 그러면 2다음에 a를 적는다. b와 b를 비교한다 -> 같다. 2a다음에 2를 적는다. b와 a를 비교한다 -> 다르다. 2a2b를 적는다. a와 c를 비교한다 -> 다르다. 2a2ba를 적는다. .... 이렇게 만든 문자 1개 그다음 문자를 2개 단위로 자른다고 가정한다. aa와 bb를 비교한다. -> 다르다 aa를 적는다. bb와 ac를 비교한다 -> 다르다 aabb를 적는다 ....

[프로그래머스] 위장 java / HashMap 사용

처음에는 해시맵에 넣어서~~ 명칭으로 맵으로 만드는 방법도 헤매고~~ 그랬지만 이렇게 간단하게 풀 수 있었다.;; import java.util.HashMap; import java.util.Iterator; class Solution { public int solution(String[][] clothes) { int answer = 1; HashMap clothesmap = new HashMap(); for (int i = 0; i < clothes.length; i++) { String key = clothes[i][1]; if (!clothesmap.containsKey(key)) { clothesmap.put(key, 1); } else { clothesmap.put(key, clothesmap..

[프로그래머스] 전화번호 목록 java /효율성 성공! Arrays.sort

나의 풀이 class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for (int i = 0; i < phone_book.length; i++) { for (int j = 0; j < phone_book.length; j++) { if (i==j) { continue; } if (phone_book[j].matches(phone_book[i]+"(.*)")) { answer=false; } } } return answer; } } 테스트 케이스는 통과했지만 효율성에서 모두 실패! matches대신 if(phone_book[j].indexOf(phone_book[i])==0) indexOf를 써도 케이스는 ..

[프로그래머스] 가장 큰 수 java / 정렬/ Comparator, compare, compareTo 메소드로 String 오름차순 내림차순 정렬

import java.util.Arrays; import java.util.Comparator; public class solution { public String solution(int[] numbers) { String answer = ""; String[] str = new String[numbers.length]; for (int i = 0; i < numbers.length; i++) { str[i] = String.valueOf(numbers[i]); } Arrays.sort(str, new Comparator() { @Override public int compare(String a, String b) { return (b+a).compareTo(a+b); } }); if(str[0].equ..