본문 바로가기
일지/취준일기

2024_11_29 취준일기 8일차

by 알케니브 2024. 11. 29.

오늘의 계획

1. 코드 공부

내용

List를 불러올때 forEach를 통해 불러와서 비슷하지만 다른 두 묶음의 데이터를 select해서 보여주는 뷰가 있었다

근데 여기서 수정하기를 눌러 똑같이 forEach문을 사용에 두 묶음의 데이터를 수정하려니, 그 두 묶음의 값이 다 한 데이터 셀 안에 욱여넣어짐.... 이걸 어떻게 해결하나 했는데, 컨트롤러에서 초기화와 함께 향상형 for문을 사용하면 됐다!

기존의 update 컨트롤러를 싹 갈아엎음

향상형 for문:

for( 타입 변수명 : 배열 또는 컬렉션 ) {
	// 반복할 코드
}

 

  • 타입: 컬렉션 또는 배열에 저장된 요소의 데이터 타입. 여기서는 Onln_Lctr.
  • 변수명: 반복문 내에서 사용할 임시 변수로, 컬렉션의 현재 요소. 여기서는 onlnLctr.
  • :: "in"이라는 의미로, onlnLctrs 컬렉션에서 각 요소를 하나씩 꺼내옴.
  • 배열 또는 컬렉션: 반복 대상이 되는 데이터. 여기서는 onlnLctrs.

 

 

 


2. 프로그래머스 코딩 테스트

문제1.

정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.

제한사항: 

  • 2 ≤ num ≤ 100
  • 2 ≤ n ≤ 9

입출력 예

num n result
98 2 1
34 3 0
  • 입출력 예 #1: 98은 2의 배수이므로 1을 return합니다.
  • 입출력 예 #2: 32는 3의 배수가 아니므로 0을 return합니다.
class Solution {
    public int solution(int num, int n) {
        int answer = 0;
        return answer;
    }
}

 

풀이과정

: 나누었을때 나머지가 0이냐 아니냐로 if문을 작성하면 될것 같았다

 

정답

class Solution {
    public int solution(int num, int n) {
        int answer = 0;
        
        if (num % n == 0) {
            answer = 1;
        } else {
            answer = 0;
        }
        
        return answer;
    }
}

 

++ 다른사람의 풀이

class Solution {
    public int solution(int num, int n) {
        int answer = num % n == 0 ? 1 : 0;
        return answer;
    }
}

삼항연산자를 쓴 사람도 있었다. 한줄이라 깔끔해서 보기 좋은듯


 

문제2.

정수 number와 nm이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

제한사항: 

  • 10 ≤ number ≤ 100
  • 2 ≤ n , m ≤ 10

입출력 예

number n m result
60 2 3 1
55 10 5 0
  • 입출력 예 #1: 60은 2의 배수이면서 3의 배수이기 때문에 1을 return합니다.
  • 입출력 예 #2: 55는 5의 배수이지만 10의 배수가 아니기 때문에 0을 return합니다.
class Solution {
    public int solution(int number, int n, int m) {
        int answer = 0;
        return answer;
    }
}

 

풀이과정

이것도 쉬웠다. n과 m을 곱한 값의 나머지를 비교하면 되니까. 위에서 본 삼항연산자를 응용해보기로 했다

class Solution {
    public int solution(int number, int n, int m) {
        int answer = number % (n * m) == 0 ? 1 : 0;
        return answer;
    }
}

근데 엥?? 임시 테스트에서는 통과였는데 제출하려하니 2번테스트에서 넘어가지 않았다...

하나하나 쪼개서 적는게 낫겠다 싶었다

 

정답

class Solution {
    public int solution(int number, int n, int m) {
        int answer = number % n == 0 & number % m == 0 ? 1 : 0;
        return answer;
    }
}

++ 다른사람의 풀이

이것도 맞기는 한데 &&를 쓰는게 더 맞나보다 

 


문제3.

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

제한사항: 1 ≤ n ≤ 100

입출력 예

n result
7 16
10 220
  • 입출력 예 #1: 예제 1번의 n은 7로 홀수입니다. 7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.
  • 입출력 예 #2: 예제 2번의 n은 10으로 짝수입니다. 10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
class Solution {
    public int solution(int n) {
        int answer = 0;
        return answer;
    }
}

 

풀이과정

롸??? 위에거처럼 쉬운거 내주다가 갑자기 이런거 내서 당황하게 만들기. 여태까지 경험으로 봤을때 이런건 늘 for문 쓰게했다. 기존의 for문은 대부분 (int i =0; i < n; i++) 였지만, 여기는 1이상의 수에다가 n이하라는 조건이 있으니 좀 다를듯

 

정답

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; i<=n; i++) {
            if(n % 2 == 1 && i % 2 == 1) {
                answer += i;
            } else if (n % 2 == 0 && i % 2 == 0) {
                answer += i*i;
            } 
        }
        return answer;
    }
}

 

++ 다른사람의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;

            for(int i = n; i >= 0; i -= 2)
                answer += (n % 2 == 0) ? i * i : i;

        return answer;
    }
}

아니 여기서도 삼항연산자를? 배워갑니다


문제4.

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 

두 수가 n과 m이라면

  • ">", "=" : n >= m
  • "<", "=" : n <= m
  • ">", "!" : n > m
  • "<", "!" : n < m

두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

 

제한사항: 1 n,m ≤ 100

입출력 예

ineq eq n m result
"<" "=" 20 50 1
">" "!" 41 78 0
  • 입출력 예 #1: 20 <= 50은 참이기 때문에 1을 return합니다.
  • 입출력 예 #2: 41 > 78은 거짓이기 때문에 0을 return합니다.
class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        return answer;
    }
}

 

풀이과정

:  이걸 어떻게 푸나...하고 힌트를 봤더니 equals 함수를 쓰라고 하더라. 더하여 구글링해보니 문자열 하나하나 넣어서 식을 만드는 것보다 n과 m을 비교하라는 글을 봐서 천잰데? 싶었다. 삼항연산자를 사용하는게 깔끔해보여서 사용했다.

 

정답

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        
        if (n < m) {
            answer = ineq.equals("<") ? 1 : 0;
        } else if (n > m) {
            answer = ineq.equals(">") ? 1 : 0;
        } else
            answer = eq.equals("=") ? 1 : 0;
        
        return answer;
    }
}

 

++ 다른사람의 풀이

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        return (">".equals(ineq) ? n > m : n < m) || ("=".equals(eq) ? n == m : false) ? 1 : 0;
    }
}

같은 삼항연산자도 더 깔끔하게 쓰는 사람이 있었다


문제5.

두 정수 ab와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.

제한사항: -1,000 ≤ ab ≤ 1,000

입출력 예

a b flag result
-4 7 true 3
-4 7 false -11
  • 입출력 예 #1: 예제 1번에서 flag가 true이므로 a + b = (-4) + 7 = 3을 return 합니다.
  • 입출력 예 #2: 예제 2번에서 flag가 false이므로 a - b = (-4) - 7 = -11을 return 합니다.
class Solution {
    public int solution(int a, int b, boolean flag) {
        int answer = 0;
        return answer;
    }
}

 

풀이과정

:

class Solution {
    public int solution(int a, int b, boolean flag) {
        int answer = 0;
        
        if (flag = true) {
            answer = a + b;
        } else if (flag = false) {
            answer = a - b;
        }
        
        return answer;
    }
}

처음에는  true와  false가 문자열 값인줄알고 큰따옴표를 넣었다가 안되길래 빼고 저렇게 만듬

근데 틀렸다길래 엥? 했다가 따옴표를 빼면서 ==를 =로 고쳐서 그런가 싶었다

 

정답

class Solution {
    public int solution(int a, int b, boolean flag) {
        int answer = 0;
        
        if (flag == true) {
            answer = a + b;
        } else if (flag == false) {
            answer = a - b;
        }
        
        return answer;
    }
}

 

++ 다른사람의 풀이

class Solution {
    public int solution(int a, int b, boolean flag) {
        return flag ? a + b : a - b;
    }
}

이번에도 삼항 연산자의 깔끔함... 하지만 if문 사랑해


3. 이력서/지원/면접 준비 활동

'일지 > 취준일기' 카테고리의 다른 글

2024_12_03 취준일기 11일차  (0) 2024.12.03
2024_12_02 취준일기 10일차  (1) 2024.12.02
2024_11_28 취준일기 7일차  (0) 2024.11.28
2024_11_27 취준일기 6일차  (1) 2024.11.27
2024_11_25 취준일기 4일차  (0) 2024.11.25