Algorithm

    [ 프로그래머스 ] 2016년

    💡 문제 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 5 24 "TUE" 📎 LINK 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b..

    [ 프로그래머스 ] 올바른 괄호

    💡 문제 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 s answer "()()" true "(())()" true ")()(" false "(()(" false 📍 참조링크 h..

    [ 프로그래머스 ] 위클리 챌린지(21.10) 8주차 최소직사각형

    class Solution { public int solution(int[][] sizes) { int answer = 0; int width = 0; int height = 0; for(int i = 0;i = sizes[i][1] ? sizes[i][0] : sizes[i][1]); int min = (sizes[i][1] >= sizes[i][0] ? sizes[i][0] : sizes[i][1]); width = (max > width ? max : width); if(min >= width) height = min; else if(min > height) height = min; } answer = width *..

    [ 프로그래머스 ] 하샤드 수

    class Solution { static int total = 0; public static void repeat(int x) { int quotient = x / 10; int remainder = x % 10; if(quotient == 0) total += remainder; else { total += remainder; repeat(quotient); } return; } public boolean solution(int x) { boolean answer = true; repeat(x); answer = (x%total==0 ? true : false); return answer; } } 📝 해결 문제를 보고 재귀함수가 가장 먼저 떠올라 재귀함수를 사용해 해결되도록 구현했다. 함수가 종료되는..

    [ 프로그래머스 ] 위클리 챌린지(21.08) 4주차 직업군 추천하기

    import java.util.Arrays; import java.util.List; class Solution { public String solution(String[] table, String[] languages, int[] preference) { String answer = ""; int total = -1; for(String filed : table) { List rankList = Arrays.asList(filed.split(" ")); String title = rankList.get(0); int sum = 0; for(int i=0;i 0) {sum += ((6-index)*pref);} } } if(total == sum) { answer = (answer.compareToIgn..

    [ 프로그래머스 ] 직사각형 별찍기

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int width = sc.nextInt(); int height = sc.nextInt(); for(int i=0;i

    [ 프로그래머스 ] 평균 구하기

    class Solution { public double solution(int[] arr) { double answer = 0; for(int i=0; i < arr.length; i++) { answer += arr[i]; } answer = answer/arr.length; return answer; } } 📝 해결 기본적인 문제라서 금방 풀었다. 나는 for문을 사용했지만 Arrays의 stream 메서드를 이용한 경우도 재미있었다. Arrays.stream(arr).average().orElse(0); average() 배열의 평균값을 구해준다. orElse() 리턴한 값이 없을 때 null 대신 0을 리턴해준다. 📍 문제 https://programmers.co.kr/learn/courses/3..

    [ 프로그래머스 ] 위클리 챌린지(21.08) 2주차 상호평가

    class Solution { public String solution(int[][] scores) { String answer = ""; for(int i=0;i= 80 ? "B" : (avg >= 70 ? "C" : (avg >= 50 ? "D" : "F" )))); answer += grade; } return answer; } } 📝 해결 처음에 첫 번째 for문의 조건식을 해당하는 배열의 개수 값으로 돌려야겠다는 생각에 i < scores[i].length 로 잡아줬는데 ArrayIndexOutOfBoundsException 오류가 발생했다. 오류가 발생한 후에 되짚어보니 x배열과 y배열의 인덱스 개수는 똑같다는 점을 이용해야한다는 것을 깨달았다. int배열은 최소값,최대값을 구해주는 메서드가 ..