본문 바로가기

프로그래머스

프로그래머스 - 전화번호 목록 내 코드1 - String.contains() 사용: contains 메서드의 매개변수가 실제로는 String이 아니라 CharSequence라는 형태로 받게 되는데거기서 뭔가 문제가 발생하는 듯 하다.class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for (int i = 0; i < phone_book.length - 1; i++) { for (int j = i + 1; j < phone_book.length; j++) { if (phone_book[i].contains(phone_book[j]) || phone_book[j].contains(phone_book[i])) { answer = fal..
프로그래머스 - 124 나라의 숫자 내 코드class Solution { public String solution(int n) { String answer = ""; String[] pattern = {"4", "1", "2"}; int nmg; while (n > 0) { nmg = n % 3; n = (n - 1) / 3; answer = pattern[nmg] + answer; } return answer; } } 기준을 뭐로 잡을지 몰라서 한참 헤맸다.
프로그래머스 - 탑 내 코드class Solution { public int[] solution(int[] heights) { int[] answer = new int[heights.length]; outer: for (int i = 1; i -1; j--) { if (heights[i] ..
프로그래머스 - 체육복 내 코드 - 오답 탐욕 알고리즘이라는 게 있다고 하는데,문제의 성격이 일치해야 적용할 수 있는데다가, 좀 직관적인 거라 알고리즘이라는 느낌이 잘 안든다.뭔 말인지 잘 모르겠다. 아래 코드 오답 이유는,한 학생이 여분을 가지고 있고 + 도둑도 맞을 수 있다는 점을 빼먹어서이다. 테스트코드에 하나 추가해 주었으면 더 좋을 거 같다.class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n - lost.length; /** * 탐욕 알고리즘 */ outer: for (int i = 0; i < lost.length; i++) { for (int j = 0; j < reserve.length; j++) { if (..
프로그래머스 - 예산 내 코드 - 다른 사람 코드도 Arrays.sort()를 쓰는 것 빼고는 특별한 건 없었던 것 같다.class Solution { public int solution(int[] d, int budget) { int answer = 0; int tmp; /** * 선택 정렬 - 오름차순 */ for (int i = 0; i d[j]) { tmp = d[i]; d[i] = d[j]; d[j] = tmp; } } } /** * 지원 가능한 부서 수 카운트 */ for (int i = 0; i = d[i]) { budget..
프로그래머스 - 2016년 내 코드class Solution { public String solution(int a, int b) { String answer = ""; String[] dayStr = {"FRI", "SAT", "SUN", "MON", "TUE", "WEN", "THU"}; int[] days = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int totalDays = 0; for (int i = 0; i < a - 1; i++) { totalDays += days[i]; } totalDays += b; int dayStrIdx = (totalDays - 1) % dayStr.length; answer = dayStr[dayStrIdx]; return answer; }..
프로그래머스 - 핸드폰 번호 가리기 내 코드class Solution { public String solution(String phone_number) { String answer = ""; int starLen = phone_number.length() - 4; String suffix = phone_number.substring(phone_number.length() - 4); for (int i = 0; i < starLen; i++) { answer += "*"; } answer += suffix; return answer; } } 다른사람 코드 - 이 문제에서 딱히 더 배울 게 있나 싶었는데,, 있었다. 1. 대입 연산자 + 삼항 연산자2. String + char 가능 ("aaaaa" + 'b' = "aaaab")class So..
프로그래머스 - 최대공약수와 최소공배수 최대공약수 구하는 걸 모르겠어서 그냥 바로 참고했다.너무 길어 보이는데, 다 주석이다. 1. 유클리드 호제법- 최소공배수 = (n * m) / 최대공약수- 최대공약수 두 수의 나머지를 이용해 순환2. 유클리드 호제법 사용 전에,, 두 수를 정렬할 필요 X(정렬 해야할 것 같았다.)class Solution { public int[] solution(int n, int m) { int[] answer = new int[2]; /** * 필요없는 부분 */ // if (n > m) { // tmp = m; // m = n; // n = tmp; // } answer[0] = gcd(n, m); answer[1] = lcm(n, m); return answer; } /** * 최소공배수 = (s * b) / ..