IT 구인 공고를 보니, 대부분의 회사에서 채용 과정 중에 코딩 테스트를 진행한다.
그동안 코딩 테스트 준비를 미루고 있다가, 지금에서야 시작하게 되었다.
이번 주 부터 프로그래머스 코딩 테스트 문제를 풀기 시작했다.
Level 0부터 차근차근 풀어볼 생각이고, 한 주간 풀었던 문제들에 대해
블로그에 포스팅하면서 회고하는 시간을 가져보려 한다.
코딩 테스트 문제 풀이 과정은 solution 메서드에서 return으로 보내는 값이 정답으로 제출된다.
정답 제출 전까지는 다른 사람의 풀이를 볼 수 없게 되어있다.
처음에 설명을 제대로 읽지 않아서, 조금 헤맸다... (main 메서드 직접 적고 난리도 아니였다는..)
몫 구하기
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
return num1/num2;
}
}
숫자 비교하기
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if(num1==num2){
answer = 1;
}else if(num1!=num2){
answer = -1;
}
//answer = (num1==num2) ? 1 : -1
return answer;
}
}
직관적으로 코드를 작성했으나, 비효율 적이다.
삼항 연산자를 사용한다면, 한 줄로 나타낼 수 있다.
나머지 구하기
public class Solution {
public int solution(int num1, int num2) {
int answer = num1%num2;
return answer;
}
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution(3,2));
}
}
처음으로 풀었던 문제인데.. 보다시피 많이 헤맸다..
그냥 return 값으로 num1%num2를 주면 된다.
두수의 곱, 두수의 차 등 간단한 사칙연산에 대해서는 생략하겠다.
나이 출력
class Solution {
int answer;
public int solution(int age) {
if(age > 0 && age <= 120){
int CurrentYear = 2022;
this.answer = CurrentYear-age+1;
}
return answer;
}
}
문제 내 제한사항이 있어서 조건문으로 넣었는데, 굳이 안해도 되는 듯하다.
각도기
class Solution {
public int solution(int angle) {
int answer = 0;
if(angle<90)
answer = 1;
else if(angle==90)
answer = 2;
else if(angle>90 && angle<180)
answer = 3;
else if(angle==180)
answer = 4;
return answer;
//return angle == 180 ? 4 : angle < 90 ? 1 : angle == 90 ? 2 : angle > 90 ? 3 : 0;
}
}
숫자 비교하기 문제와 마찬가지로, 삼항연산자를 사용하면 간단히 나타낼 수 있다.
짝수의 합
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=0; i<=n; i++){
if(i%2==0){
answer += i;
}
}
return answer;
}
}
for문으로 1씩 전부 반복을 했으나, i++이 아니라 i+=2로 2씩 증가하도록 처리했으면 더 효율적이였을 것이다.
양꼬치
class Solution {
public int solution(int n, int k) {
int answer = 0;
int service = n/10;
answer = (12000*n)+(2000*k);
if(service >= 1){return answer-(2000*service);}
return answer;
// return (12000 * n) + (2000 * k) - (2000 * (n/10));
}
}
양꼬치와 음료수값, 서비스 음료값을 나누어 작성했는데, 합쳐서 작성했다면 좋았을 것 같다.
배열의 평균값
class Solution {
public double solution(int[] numbers) {
int result = 0;
double answer = 0;
for(int i=0; i<numbers.length;i++){
result += numbers[i];
}
answer = (double)result/numbers.length;
return answer;
}
}
기본형 변수타입과 형변환에 대해 복습할 필요가 있을 것 같다. float와 double을 혼동했다.
for문에 대해서는 향상된 for문으로 나타내면 더 단순하게 작성할 수 있었을 것이다.
머쓱이보다 키 큰 사람
class Solution {
public int solution(int[] array, int height) {
int answer = 0;
for(int i=0;i<array.length;i++){
if(height<array[i]){
answer += 1;
}
}
return answer;
}
}
마찬가지로 향상된 for문을 사용하면 코드를 줄일 수 있다.
중복된 숫자 개수
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
for(int i=0;i<array.length;i++){
if(n==array[i])answer++;
}
return answer;
}
}
피자 나눠 먹기 (1)
class Solution {
public int solution(int n) {
int answer = 0;
if(n <= 7){
answer = 1;
}else if(n > 7){
answer = n/7;
if(!(0==n%7))answer++;
}
return answer;
//return n % 7 > 0 ? n/7 + 1 : n/7;
}
}
삼항 연산자를 사용하면 간단히 나타낼 수 있었을 것이다.
짝수 홀수 개수
class Solution {
int oddNum = 0;
int evenNum = 0;
public int[] solution(int[] num_list) {
for(int i : num_list){
if(i%2 == 0){evenNum++;}
else{oddNum++;}
}
int[] answer = {evenNum,oddNum};
return answer;
}
}
배열의 사이즈가 정해져있으므로, 홀수 짝수 변수를 만들지 않고
배열의 인덱스를 이용했으면 코드가 더 짧았을 것이다.
배열 뒤집기
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int count = num_list.length-1;
for(int i=0;i<num_list.length;i++){
answer[i] = num_list[count--];
}
return answer;
}
}
불필요한 변수를 만들지 않도록 해야겠다.
문자열 뒤집기
class Solution {
public String solution(String my_string) {
String answer = "";
int stringIndex = my_string.length()-1;
for(int i=0;i<my_string.length();i++){
answer += my_string.charAt(stringIndex--);
}
return answer;
}
}
배열 자르기
import java.util.*;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = Arrays.copyOfRange(numbers,num1,num2+1);
return answer;
}
}
Arrays와 String 클래스에서 제공하는 유용한 메서드들이 많다. 자주 사용하는 것들은 알아둘 필요가 있다.
최댓값 만들기(1)
import java.util.*;
class Solution {
public int solution(int[] numbers) {
Arrays.sort(numbers);
return numbers[numbers.length-1]*numbers[numbers.length-2];
}
}
피자 나눠 먹기(3)
class Solution {
public int solution(int slice, int n) {
int answer = 0;
answer = n/slice;
if(n%slice!=0)answer++;
return answer;
}
}
1주차 후기
아직은 0단계 문제이다보니, 시간이 오래 걸리지는 않았다.
문제의 난이도가 높지는 않으니, 코드의 퀄리티를 높여서 작성하도록 연습할 필요성을 느꼈다.
다른 사람들의 풀이를 보면서, 삼항 연산자와 향상된 for문의 활용 방법에 대해서 알 수 있었다.
쉽게 풀렸다고 넘어가지 말고, 다른 사람의 풀이와 비교해보면서 공부해야겠다.
'코딩 테스트 문제 풀이 > 프로그래머스 lv 0' 카테고리의 다른 글
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 4 (0) | 2022.12.24 |
---|---|
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 3 (1) | 2022.12.11 |
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 2 (0) | 2022.12.04 |