정올문자열2 - 형성평가5

Titanium·2025년 3월 14일

JUNGOL

목록 보기
3/3

방법1

✏️ 문자열 검색 문제 해결 과정

📖 문제 설명

  • 5개의 단어(각 단어는 100자 이하)를 입력받음.
  • 이후 문자 또는 문자열(100자 이하)을 입력받음. (문자 하나일 수도 있고 문자열일 수도 있음)
  • 입력받은 문자가 포함된 단어를 모두 출력.
  • 찾는 단어가 없으면 "none"이라고 출력.

🔍 문제 해결 과정

🔹 입력 처리

  • Scanner를 사용하여 5개의 단어를 입력받음.
  • 이후 검색할 문자열 2개를 추가로 입력받음.
  • 모든 입력값에서 불필요한 공백을 제거하기 위해 .trim() 사용.

🔹 검색 기능 구현

  • for 문을 사용하여 입력된 단어 목록을 순회하며 검색어가 포함된 단어를 찾음.
  • if 문을 활용하여 두 개 중 하나라도 포함된 경우 출력.

🔹 출력 예외 처리

  • 검색된 단어가 하나도 없으면 "none"을 출력해야 함.
  • boolean found 변수를 사용하여 검색된 단어가 있는지 체크.

💡 최적화된 최종 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String[] words = new String[5];
        for (int i = 0; i < 5; i++) {
            words[i] = sc.nextLine().trim();
        }

        String[] searchWords = { sc.nextLine().trim(), sc.nextLine().trim() };

        boolean found = false;
        for (String word : words) {
            for (String search : searchWords) {
                if (word.contains(search)) {
                    System.out.println(word);
                    found = true;
                    break;
                }
            }
        }

        if (!found) {
            System.out.println("none");
        }

        sc.close();
    }
}

🔹 최적화 포인트

contains() 메서드 사용 → 문자열이 포함되는지 간단하게 확인 가능
불필요한 공백 제거 (trim()) → 입력 시 실수 방지
검색어가 없을 경우 "none" 출력boolean found 변수 활용
검색어 개수가 확장될 경우에도 쉽게 대응 가능 → 배열을 사용하여 확장성을 높임
불필요한 반복 최소화 (break 추가) → 단어가 검색어 중 하나라도 포함되면 즉시 루프 종료

방법2

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String[] words = new String[5];  // 5개의 단어 입력
        for (int i = 0; i < 5; i++) {
            words[i] = sc.nextLine().trim();  // 공백 제거 후 저장
        }

        String search1 = sc.nextLine().trim();  // 첫 번째 검색어 입력
        String search2 = sc.nextLine().trim();  // 두 번째 검색어 입력

        boolean found = false;
        for (String word : words) {
            // 두 개의 검색어 중 하나라도 포함하면 출력
            if (word.contains(search1) || word.contains(search2)) {
                System.out.println(word);
                found = true;
            }
        }

        if (!found) {
            System.out.println("none");  // 검색된 단어가 없을 경우 "none" 출력
        }

        sc.close();
    }
}

📝 문제 설명
5개의 단어(각 단어는 100자 이하)를 입력받음.
이후 문자 또는 문자열(100자 이하)을 입력받음. (문자 하나일 수도 있고 문자열일 수도 있음)
입력받은 문자가 포함된 단어를 모두 출력.
찾는 단어가 없으면 "none"을 출력.

문제 해결 과정

1️⃣ 입력 처리
Scanner를 사용하여 5개의 단어를 입력받음.
이후 검색할 문자열 2개(search1, search2)를 추가로 입력받음.
모든 입력값에서 불필요한 공백을 제거하기 위해 .trim() 사용.
2️⃣ 검색 기능 구현
for 문을 사용하여 입력된 단어 배열을 순회하며 검색어(search1, search2)가 포함된 단어를 찾음.
if (word.contains(search1) || word.contains(search2))를 사용하여 둘 중 하나라도 포함된 경우 출력.
3️⃣ 출력 예외 처리
검색된 단어가 하나도 없으면 "none"을 출력해야 함.
boolean found 변수를 사용하여 검색된 단어가 있는지 체크.

profile
핵심먼저

0개의 댓글