본문 바로가기

취업

(11)
프로그래머스 과일 장수 문제 정답처음엔 각 숫자마다 개수를 세고 m만큼 나눠서 상자를 구하려 했으나코드 작성 중 정렬 문제라는 것을 깨닫게 되었다. 내림차순으로 배열을 정렬하고 m개씩 끊어서 가장 낮은 숫자가 배열 마지막에 있는 숫자이므로 그 숫자를 곱해서 총 이익을 구하면 된다. for문은 i를 증가시키고 조건문을 탐색하므로 조건문에 배열의 길이가 지금 i와 m을 더한 것보다 클경우 중단하도록 주었다. 최종 제출한 정답import java.util.Arrays;import java.util.Collections;class Solution { public int solution(int k, int m, int[] score) { int answer = 0; Integer[] sco..
프로그래머스 유연근무제 문제 정답따로 직원 수 만큼의 배열을 두고1. 토요일, 일요일을 체크해서 거르기2. 출근한 시간 -10 보다 출근 희망 시간이 클경우만 배열에 더해주기3. 지각하지 않은 날이 5가 넘는 직원만 더해서 출력하기순서로 작성했다. 하지만 테스트 케이스에서 몇 가지 경우에 걸렸다.따로 테스트 케이스를 만들어 실험해본 결과2번에서 희망 출근 시간에 10을 더했을 때 정시를 넘어가는 경우를 제대로 거르지 못 했다. 따라서 출근 시간을 기준으로 빼는 것이 아닌 희망 출근 시간에 10을 더하고 조건에 따라 더하는 방식으로 변경했다.1. 희망 출근 시간에 10을 더할 경우 정시를 넘는 경우1-1. 희망 출근 시간보다 출근 시간이 더 빠른 경우(정확히 말하면 시가 희망 출근 시간과 같거나 적은 경우)1-2. 희망 출근 시..
프로그래머스 택배 상자 꺼내기 문제  정답총 층수와 해당하는 num의 층수를 구해서 빼면 구할 수 있을 것이라 생각했다.맨 위층이 다 채워진 경우와 다 채워지지 않는 경우로 나누고,다 채워지지 않은 경우 num이 해당하는 층이 정방향인지 역방향인지 고려하여 에서 어느 위치에 있는지 1부터 w까지 구했다. 역방향의 경우 w를 빼주어 정방향의 위치로 고쳐주었다.맨 위층의 방향도 고려하여 어디까지 상자가 채워져 있고 이를 num의 위치와 비교하여 상자의 개수를 구했다.class Solution { public int solution(int n, int w, int num) { int answer = 0; int numh = 0; int numloc = 0; // 총 층수 구하기 ..
백준[1181] 단어 정렬 문제알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.길이가 짧은 것부터길이가 같으면 사전 순으로단, 중복된 단어는 하나만 남기고 제거해야 한다.입력첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.정답- 중복 제거를 위해 HashSet으로 input 받음- sort() 함수 사용을 위해 ArrayList 객체 생성하면서 HashSet 넣어줌- compare() 함수를 직접 구현하기 위해 StrComparator 클래스에 인터페이스 Comparator 구현- compare() 함수를 길이로 비교하도록..
토익 대비 영어 문법 정리2(가산명사, 동사시제, 전치사) 1. 명사- 가산명사(셀 수 있는 명사) - 단수형 -> 관사 or 한정사가 반드시 붙어야 함, 부정관사(a/an)은 단수형에만 붙음                                             - 복수형 -> 단독 사용 가능- 불가산명사(셀 수 없는 명사) -> 단독 사용 가능 관사: 명사 앞에서 명사의 의미를 한정하는 역할     - 정관사(the): 명사 수 관계없이 사용     - 부정관사(a/an): 가산명사 단수형에서만 사용 한정사: 명사 앞에서 명사의 범위를 한정하는 역할               관사도 한정사의 일종     - 관사: 정관사, 부정관사     - 소유격: my, your, their, our 등     - 지시사: this, that, these 등    ..
토익 대비 영어 문법 정리(과거분사, 수동태, 동명사, 현재분사, 4형식 목적격보어, 관계대명사, 관계부사, 의문사, 절) 1. 동사의 3단 변화 동사(v) - 과거동사 - 과거분사(p.p) 과거분사 -> 동사X, 명사 수식 수동태(be동사 p.p)- 과거시제 was/were p.p- 현재완료시제 has/have been p.p- 진행형 be/being p.p  2. 동명사/현재분사v -ing 2가지 -> 동명사 or 현재분사- 동명사 -> 명사(N)(주어(s), 목적어(o), 보어(c) 역할), ~것- 현재분사 -> 형용사(A)(명사 수식) v -ing + v -> 동명사v - ing + s +v -> 현재분사  3. 목적격보어S  V  O  O.C목적격 보어(O.C) 자리 -> to부정사(to 동사, ~하기 위해)                                     -> v -ing/p.p           ..
[미완]프로그래머스 [PCCP 기출문제] 1번/붕대감기 문제 - [PCCP 기출문제] 1번/붕대감기 정답- 몬스터가 공격하는 시간을 체크하기 위해 Stack 사용- for문으로 일일히 시간을 확인하는 것보다 맨 앞의 시간 가져온 후 버리는게 효율적이라고 생각함import java.util.*;class Solution { public int solution(int[] bandage, int health, int[][] attacks) { int t = 0; // 시간 int s = 0; // 연속 성공 int h = health; // 체력 변화량 int frontAttack = 0; // 공격 시간 버퍼 Stack attackTime = new Stack(); ..
프로그래머스 가장 가까운 같은 글자 문제 - 가장 가까운 같은 글자 정답- toCharArray()로 문자열을 문자 배열로 변환- 동일한 문자 위치(인덱스)를 알기 위해 문자열 배열 buffer 선언class Solution { public int[] solution(String s) { char[] sArray = s.toCharArray(); // 문자열 문자 배열로 바꾸기 char[] buffer = new char[s.length()]; int[] answer = new int[s.length()]; for (int i=0; i 시간복잡도이중 for문으로 O(n^2) 다른 사람 풀이https://school.programmers.co.kr/learn/courses..