알고리즘 문제 연습 12

[프로그래머스]N개의 최소 공배수

🔍 문제 📊 분석두 수 a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다는 성질을 가지고 있다.두수의 최소공배수와 최대공배수는 유클리드 호제법을 이용하여 구할수있다.배열의 원소들을 위성질을 이용하여 loop을 하면 최소공배수를 구할수있다.✏️ 풀이class Solution { public int solution(int[] arr) { int answer = 0; if(arr.length == 1) return arr[0]; int tmp = gcd(arr[0],arr[1]); // 첫 2개 원소의 최대공약수 answer = (arr[0]*arr[1]) /tmp;// 첫 2개 원소의 최소공배..

[프로그래머스] JadenCase 문자열

🔍 문제📊 분석문장의 첫 글자는 대문자 그리고 나머지는 소문자.공백 이후 첫 글자는 대문자 그리고 나머지는 소문자.만약 문장이 공백으로 끝난다면 공백을 살려서 return.✏️ 풀이 class Solution { public String solution(String s) { String answer = ""; String[] tmp = s.split(" "); for(int i = 0; i  처음 풀이로 풀었을시 런타임에러가 많이 나와 당황했다. 그리고 실패한 케이스 중 아마 마지막 공백으로 끝나는 문자열을 생각하지 못하고 풀었던 거 같다.⚒️개선된 코드class Solution { public String solution(String s..

[프로그래머스] 바탕화면 정리

🔍문제 📊분석파일(#) 이 위치한 가장 작은 y, x 값을 구한다.파일(#) 이 위치한 가장 큰 y, x의 값을 구한 뒤 1 을더해준다 (y+1, x+1) 드래그를 하면 파일보다 많이 커서를 위치해야 되기 때문.이 값들을 (minx, miny, maxX, maxY) 값으로 나열한 뒤 보내준다.✏️ 풀이import java.util.*;class Solution { public int[] solution(String[] wallpaper) { int maxY = 0; int maxX = 0; int minX = wallpaper[0].length(); int minY = wallpaper.length; for..

[프로그래머스] 성격 유형 검사하기

🔍문제 📊분석유형의 점수 가 동일할시 사전순으로 빠른 유형을 가져간다.1-3 까지는 비동의 유형에 5-7 까지는 동의유형에 점수를 추가한다.비동의 유형은 Survey원소의 첫번째 캐릭터이며, 동의 유형은 Survey원소의 두번쨰 캐릭터다.✏️ 풀이import java.util.*;class Solution { public String solution(String[] survey, int[] choices) { String answer = "RCJA"; Map score = new HashMap(); score.put("R", 0); score.put("T", 0); score.put("C", 0); score.put("F..

[프로그래머스] 숫자 짝꿍

🔍문제📊분석공통 포함되는 숫자들을 구한다.공통 포함된 숫자 중 가장 큰 정수를 답으로 넘겨준다.공통 포함된 숫자가 아무것도 없을 경우 답은 -1.공통 포함된 숫자가 0일 경우 답은 0.✏️ 풀이import java.util.*;class Solution { public String solution(String X, String Y) { String answer = ""; String minString; String maxString; int xlen = X.length(); int ylen = Y.length(); List lst = new ArrayList(); if(xlen!=..

[프로그래머스] 기사단원의 무기

🔍문제📊분석주어진 숫자 number까지의 모든 수의 약수들을  구한다.구한 약수 값이 limit 와 같거나 낮은 경우 answer += 약수값.구한 약수 값이 limit 보다 높을 경우 answer += power.✏️풀이import java.util.*;class Solution { public int solution(int number, int limit, int power) { int answer = 0; List numlst = new ArrayList(); int counter; for (int i = 1; i 위의 풀이로 실행 할경우 1부터 원하는 숫자까지 모든 수를 for문을 돌아 시간초과 에러가 난다. 보다 효율적이게..

[프로그래머스,Java]2016년

🔍문제📊분석2016년은 윤년 이므로 2월에 마지막날은 29일이다.1부터 7월까지 홀수달은 31일 을 갖고 짝수달이 30 일을 갖게 된다.8부터 12월까지는 짝수달이 31일 을 갖고 홀수달은 30일을 갖게 된다✏️풀이class Solution { public String solution(int a, int b) { String answer = ""; //요일 array String[] day = {"FRI","SAT","SUN","MON","TUE","WED","THU"}; //1월 1일 부터의 차이를 구하기 떄문에 각 달, 일 -1 int month = a - 1; int totalDay = b-1; ..

[프로그래머스, Java] 푸드 파이트 대회

🔍문제📊분석물은 food array의 첫 번째이며 항상 1개만 존재한다.Food array의 index값은 그 음식의 칼로리이고 value는 음식의 계수이다. (ex. [1,3,4,6] = 물 1개, 1 칼로리 음식 3개, 2 칼로리 음식 4개, 3 칼로리 음식 6개.) return 하는 값은 낮은 칼로리부터 높은 순으로 올라가며 0을 기준으로 대칭하는 구조이다. (이떄 완벽하게 2명에게 나눠지지 않는다면 남는 음식은 패기 된다)✏️풀이import java.util.*;class Solution { public String solution(int[] food) { String answer = ""; //값을 저장할 리스트 생성 List lst = new Ar..

[프로그래머스, Java]둘만의 암호

🔍문제📊분석 String s를 for문을 이용하여 각각의 character를 받는다.이중 for문을 이용해 알파벳 배열상 index 만큼 후에 위치한 character를 answer의 순서대로 저장해 준다.주의: 알파벳 배열상 26인 z보다 범위가 초가 할 시에는 a부터 다시 시작되니 알파벳정열상 index를 -26을 해주면 된다.만약 추가되는 index 범위 안에 skip에 포함된 character 가있을 시 skip에 포함된 개수에 character만큼 index에서  빼준다. ✏️풀이class Solution { public String solution(String s, String skip, int index) { String answer = ""; ..