Day4 - 조건 문자열

2025. 7. 11. 11:23·CODING TEST/programmers

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 조건 문자열

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181934

 

 

📌 문제 요약

- 핵심 조건: 각 수를 a, b 입력받아 출력하는 코드 작성

- 제한: - 100,000 ≤ a, b ≤ 100,000

 

 

📌 내 풀이 및 코드

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;

        if (ineq.equals(">") && eq.equals("=")) {
            return n >= m ? 1 : 0;
        } else if (ineq.equals("<") && eq.equals("=")) {
            return n <= m ? 1 : 0;
        } else if (ineq.equals(">") && eq.equals("!")) {
            return n > m ? 1 : 0;
        } else if (ineq.equals("<") && eq.equals("!")) {
            return n < m ? 1 : 0;
        }
        return 0;
    }
}

//
if (n < m) {
    return 1;
} else {
    return 0;
}

- 원래는 // 아래 코드처럼 풀었는데 코드가 너무 길어져서 삼항 연산자를 썼음.

- 문자열 비교할 때 계속 .equals() 쓰는걸 까먹음. 아무 생각없이 =을 써서 계속 틀림.. (이젠 진짜 외웠)

 

 

 

📌 다른 사람들 풀이

// 1
// 1️⃣ 가능한 조건들을 Map에 키-값으로 저장
Map<String, BiFunction<Integer, Integer, Boolean>> functions = Map.of(
      ">=", (a, b) -> a >= b,
      "<=", (a, b) -> a <= b,
      ">!", (a, b) -> a > b,
      "<!", (a, b) -> a < b
);
// 2️⃣ 키로 조건 선택해서 함수 실행
return functions.get(ineq + eq).apply(n, m) ? 1 : 0;


// 2
boolean answer = false;
if (ineq.equals(">") && eq.equals("="))
    answer = n >= m;
else if (ineq.equals("<") && eq.equals("="))
    answer = n <= m;
else if (ineq.equals(">") && eq.equals("!"))
    answer = n > m;
else 
    answer = n < m;
return answer ? 1 : 0;

<-- 다른 풀이 요약 -->

- 1 : Map+BiFunction 방식 : 이렇게 풀고 싶었는데 기억이 안났음...

- 2 : boolean & 삼항연산자

버전  핵심  장점  단점
기본 if-else 모든 케이스 직접 분기 직관적 중복 코드 많음
Map + BiFunction 조건을 테이블화 조건 많아져도 유지보수 쉽다 람다/Map 문법 모르면 어려움
boolean 변수 조건문 간결화 return 중복 제거, 깔끔 구조는 기본과 동일

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** 자바의 **원시 타입(Primitive Type)**과 **참조 타입(Reference Type) **

1) 원시 타입 (Primitive Type)

  • 자바에서 가장 기본적인 값만 저장하는 타입. ➡️ 값 그 자체를 저장함.
  • 대표적인 예: int (정수) / double (실수) / char (문자 1개) / boolean (참/거짓)

2) 참조 타입 (Reference Type)

  • 객체(인스턴스), 배열, 클래스 등은 전부 참조 타입. ➡️ 값 자체가 아니라 **값이 저장된 위치(주소)**를 저장.
  • 대표 예: String / ArrayList / 배열 int[] / 사용자 정의 클래스
// 1. 원시타입 예시
int a = 3;
int b = 3;

if (a == b) {
    // true : a와 b는 값이 같음
}


// 2. 참조타입 예시
String s1 = new String("hi");
String s2 = new String("hi");

(1) 주소 비교
if (s1 == s2) {
    // false : s1, s2는 서로 다른 객체(주소) : 문자열 내용이 같아도 new로 서로 다른 객체를 만들어서 주소가 다름.
}

(2) 타입 값 비교
if (s1.equals(s2)) {
    // true : s1과 s2의 실제 문자열 내용이 같음
}

 

'CODING TEST > programmers' 카테고리의 다른 글

Day5 - 주사위 게임 2  (0) 2025.07.12
Day4 - flag에 따라 다른 값 반환하기  (0) 2025.07.11
Day4 - 홀짝에 따라 다른 값 반환하기  (0) 2025.07.11
Day3 - 문자열 곱하기  (0) 2025.07.10
Day3 - 문자 리스트를 문자열로 변환하기  (0) 2025.07.10
'CODING TEST/programmers' 카테고리의 다른 글
  • Day5 - 주사위 게임 2
  • Day4 - flag에 따라 다른 값 반환하기
  • Day4 - 홀짝에 따라 다른 값 반환하기
  • Day3 - 문자열 곱하기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    토익 스피킹
    AWS Certified Cloud Practitioner
    클라우드서비스개발
    우리fisa
    COS Pro
    회고
    SQL
    회고록
    우리 fisa
    프로그래머스
    감행
    프로젝트 리팩토링
    toeic speaking
    baekjoon
    백준
    Programmers
    AWS Certification
    우리fis아카데미
    java
    CLF-C02
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Day4 - 조건 문자열
상단으로

티스토리툴바