본문 바로가기

IT/Algorithm13

프로그래머스(Programmers) 모의고사(java) 프로그래머스(Programmers) 문제명 : 모의고사 언어 : 자바(java) 1,2,3번 수포자가 찍는 방식에 대한 배열이 있고 답 배열을 받으면 1,2,3번 수포자 배열에 맞춰서 몇개 맞았는지를 비교한 후 오름차순 정렬해서 반환하는 문제인데 문제 자체는 그렇게 어렵지 않지만 문제는 코드를 짧게 만들 수 있을 것 같은데 난 그걸 못 찾겠더라 코드 짧게 어떻게 못할까 하다가 그냥 길게 해버렸는데 내 풀이내용은 다음과 같다 public int[] solution(int[] answers) { int[] supo1 = new int[] {1,2,3,4,5}; int[] supo2 = new int[] {2,1,2,3,2,4,2,5}; int[] supo3 = new int[] {3,3,1,1,2,2,4,4.. 2019. 8. 20.
프로그래머스(Programmers) 완주하지 못한 선수(java) 프로그래머스(Programmers) 문제명 : 완주하지 못한 선수 언어 : 자바(java) 이 문제에서 포인트는 해시를 이용해서 풀어야 한다는 건데 그걸 모르고 온갖 방법으로 풀다가 효율성을 통과를 못해서 삽질을 오래 했다가 문제에서 해시를 보고 쉽게 풀게 되었다 생각나는 해시로는 HashSet과 HashMap이 있는데 HashSet은 중복을 허용하지 않으므로 이름이 중복되는 경우에는 사용하기 힘들어 보이고 HashMap도 Key의 중복은 되지 않지만 대신 Value를 변경할 수 있으므로 이름을 Key로 주고 이름이 여러번 들어오면 Value를 올려서 넣어주고 Participant 배열을 HashMap 안에 다 넣은 뒤 Completion 배열을 돌려서 Value를 도로 빼주면 되는데 Completion.. 2019. 8. 20.
프로그래머스(Programmers) 약수의 합(java) 프로그래머스(Programmers) 문제명 : 약수의 합 언어 : 자바(java) n을 받아서 n의 약수를 구한 후 그 약수들을 모두 더해서 반환하면 되는데 근데 약수가 뭐더라..? 6을 2로 나눈다 했을때 나머지가 나오지 않으니 나머지 없이 모두 나눠지는 값을 약수라 하는 것이다 즉 6의 약수는 1,2,3,6이 되는 것이다 내가 푼 방법은 다음과 같은데 약수는 for 문을 돌려서 값 % i == 0이면 약수가 되는거고 이 값들을 더해준 후 반환하면 되는 것이다 프로그래머스에 바로 적용할 수 있는 답은 아래와 같다 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i 2019. 8. 18.
프로그래머스(Programmers) 문자열을 정수로 바꾸기(java) 프로그래머스(Programmers) 문제명 : 문자열을 정수로 바꾸기 언어 : 자바(java) 문자열을 하나 받아서 int 형태로 반환하면 되는데 Integer.parseInt(String값); 을 사용하면 고민할 필요도 없이 바로 문제를 끝낼 수 있다 내 답안은 아래와 같은데 parseInt를 사용하면 String을 int 형태로 바꿔주는데 음수일 경우에도 바로 변환이 가능하다 문제에서 잘못된 값이 입력되는 경우는 없다고 하기 때문에 잘못된 값이 들어올 경우를 걱정할 필요가 없다 만약 있다고 한다면 try catch 문을 사용해서 보내주면 될 것이다 프로그래머스에서 바로 적용 가능한 답안은 다음과 같다 class Solution { public int solution(String s) { int ans.. 2019. 8. 15.
프로그래머스(Programmers) 2016년(java) 프로그래머스(Programmers) 문제명 : 2016년 언어 : 자바(java) 2016년 문제는 Calendar를 사용해서 문제를 풀어야 되는데 쓸 줄 모르기 때문에 상당한 위기가 닥치게 된다 날짜를 받는 건 받는건데 그 날짜를 어떻게 Calendar에 넣고 그 날짜에서 요일을 가져오냐는 것이다 일단 답안을 보기 전에 간단하게 설명을 하자면 Calendar cal = Calendar.getInstance(); 로 현재 날짜를 가져와 cal 객체 안에 넣을 수 있고 cal.set(년,월,일 중 선택, 값) 으로 날짜를 변경해 줄 수 있는데 년 - Calendar.YEAR 월 - Calendar.MONTH 일 - Calendar.DAY_OF_MONTH 이렇게 넣어주면 된다 마지막으로 값을 뽑아올 때는 c.. 2019. 8. 15.
프로그래머스(Programmers) 두 정수 사이의 합(java) 프로그래머스(Programmers) 문제명 : 두 정수 사이의 합 언어 : 자바(java) 두 정수를 받아 a와 b중 큰 숫자와 작은 숫자로 분류한 뒤 작은 숫자에서 큰 숫자가 될 때까지 더해주면 되는데 값이 동일할 경우에는 a와 b중 아무 값이나 반환하면 된다 포인트는 a와 b중 큰 숫자를 찾아내고 큰 숫자에 맞춰서 작은 숫자를 큰 숫자가 될때까지 더해주면서 그 값을 반환하면 된다는 거다 내가 푼 방법은 다음과 같은데 일단 bigNum이라는 long 타입의 변수를 만들어 여기에 받은 int a와 b 중에서 더 큰 값을 받아주고 작은 값으로는 for문을 돌려서 answer에 계속 더해준다 반면 a와 b가 같을 경우에는 a와 b 중에 하나를 answer로 넣어 반환시킨다 마지막으로 프로그래머스 문제에 복사.. 2019. 8. 15.