/java-ormi-middle-test

[오르미 백엔드 4기] 중간 평가 : Java 프로그램 작성하기

Primary LanguageJava

📖 [오르미 백엔드 4기] 중간 평가

그동안 공부했던 Java 개념을 바탕으로 각 문제에 맞는 프로그램을 작성하세요.

문제는 총 4문제 입니다.

마감일시 : 2023 02 26 13:00pm까지

🚀 1. 도형의 면적 구하는 프로그램

아래 계층 구조를 구현하여 도형의 면적을 구하는 프로그램을 작성해주세요.

각 도형 클래스에서는 getArea() 메소드를 오버라이딩하여 해당 도형의 넓이를 계산합니다. 테스트 데이터를 다양하게 넣고 검증해주세요.

클래스다이어그램.png

  • Shape 인터페이스 : getArea() 메서드를 선언합니다.
  • Circle 클래스 : Shape 인터페이스를 구현합니다. 반지름을 멤버 변수로 가집니다.
  • Rectangle 클래스 : Shape 인터페이스를 구현합니다. 가로와 세로를 멤버 변수로 가집니다.
  • Triangle 클래스 : Shape 인터페이스를 구현합니다. 밑변과 높이를 멤버 변수로 가집니다.

🚀 2. 소수 판별 프로그램

사용자로부터 숫자를 입력 받고, 해당 숫자가 소수인지 아닌지 판별하는 프로그램을 작성해주세요.

소수정의.png
[소수란?-출처:chatGPT]

<제한사항>
사용자로부터 입력받는 숫자의 범위는 다음과 같습니다. 
1 <= number <= 100

<입력 예시>
4

<출력 예시>
false

🚀 3. Currency Exchange

원화를 달러/엔 으로 환전하는 프로그램을 작성해주세요.

코드 작성 당일의 환율 정보를 참고하여 소수점 2자리 까지 계산 후 결과를 출력해주세요. (정밀도가 높은 데이터 타입을 사용할수록 가산점)

  • Input: 원(KRW) = 3000000
  • Output: 달러($) = 2,242.15 / JPY = 332027.36
환율정보는 그날의 환율을 참고하여 고정 
1$ = ₩1338.00
100¥ = ₩903.54

cf) 소수점 2자리 Java 코드 예시
String.format(%1.2f, doubleXXX)

System.out.printf(%.2f%n, num); 

DecimalFormat decimalFormat = new DecimalFormat("0.00");
System.out.println(decimalFormat.format(num));
<입력 예시> 
(KRW) = **3000000**

<출력 예시>
**달러($) = 2,242.15 / JPY = 332027.36**

🚀 4. WordCounter - 긴 문장에서 특정 단어 찾기

아래 주어진 긴 문장에서 특정 단어를 찾는 기능을 구현해주세요. 출력은 맨 하단에 출력 예시를 참고해주세요.

1. 문자열에서 가장 긴 단어

2. 문자열에서 가장 많이 나온 단어 Top 3

인공지능 기술은 현재 우리의 삶을 변화시키고 있으며 미래에는 더욱 더 중요한 역할을 할 것으로 예상됩니다 이 기술은 컴퓨터 시스템이 인간의 지능을 모방하고 특정 작업을 수행할 수 있도록 하는 것을 포함합니다 인공지능 다양한 형태로 발전하고 있으며 머신러닝과 딥러닝 같은 알고리즘의 발전은 이 기술의 발전을 가속화시키고 있습니다 머신러닝과 딥러닝은 대량의 데이터를 분석하고 패턴을 식별하여 문제를 해결합니다 이런 기술은 의료 분야에서는 질병 진단 및 예측 의료 영상 해석 개인 맞춤형 치료 등에 사용되고 있습니다 또한 금융 분야에서는 사기 탐지 신용 점수 산정 주식 시장 예측 등 다양한 분야에 적용되어 고도화되고 있습니다 자연어 처리(NLP) 기술의 발전으로는 컴퓨터가 인간의 언어를 이해하고 생성할 수 있게 되었습니다 이러한 기술은 검색 엔진 최적화(SEO) 챗봇 개발 번역 서비스 등 다양한 분야에서 사용되고 있습니다 특히 의료 분야에서는 환자와 의사 간의 의사소통을 원활하게 하고 의료 기록을 관리하는 데 사용되고 있습니다 인공지능 기술은 또한 산업 자동화를 가속화하고 있습니다 로봇 공학 분야에서는 AI가 로봇의 동작을 최적화하고 생산성을 향상시키는 데 사용되고 있습니다 또한 제조업에서는 자동화된 시스템이 생산 과정을 최적화하고 인력을 절감하는 데 활용되고 있습니다 그러나 이러한 기술 발전은 도전과 과제도 함께 가져왔습니다 데이터 프라이버시 윤리적 문제 일자리의 자동화 등이 그 예입니다 또한 인공지능 의 결정 과정이 투명하지 않을 경우에는 신뢰성 문제가 발생할 수 있습니다 이러한 문제들은 정부 기업 및 학계에서 공동으로 해결해야 할 과제입니다 또한 인간과 기계 간의 관계에 대한 사회적인 측면도 고려되어야 합니다 기술의 발전으로 인한 사회적인 영향을 예측하고 조절하는 것이 중요합니다 이를 통해 인간의 복지와 발전을 도모할 수 있습니다 결론적으로 인공지능 기술은 우리의 삶을 긍정적으로 변화시키고 있으며 미래에는 더욱 더 중요한 역할을 할 것으로 기대됩니다 하지만 이러한 기술의 발전은 책임 있는 방향으로 이뤄져야 하며 인간의 복지와 발전을 위해 사용되어야 합니다 함께 노력하여 인공지능 기술이 보다 포용적이고 지속 가능한 미래를 만들어 나갈 수 있기를 희망합니다

<구현상세>

  • 공백을 기준으로 문자열을 단어로 분할합니다.
    • “인공지능”, “기술은”, “현재”, “우리의” , …. “미래에는” … 모두 각 하나의 단어로 취급합니다.
  • 샘플 코드(WordCounter, WordInfo 클래스)를 참고하여 기능을 구현해주세요.
  • 객체지향에 맞는 코드로 자유롭게 작성해주세요.
  • 정렬 로직을 직접 구현한다면 가산점
public class WordInfo {
    private String longestWord;
    private Map<String, Integer> frequency;
		...

		...
}
import java.util.Arrays;
import java.util.List;

public class WordCounter {
    public static void main(String[] args) {
        WordInfo info = check("""
								위에서 주어진 문장
                """);
    }

    public static WordInfo check(String str) {
        WordInfo info = new WordInfo();

				// 문자열 Split 로직 샘플
        List<String> list = Arrays.stream(str.split(" ")).toList();
        for (String word : list) {
            System.out.println(word);
        }
        
				//TODO 1. 문자열 에서 가장 긴 단어 찾기
        //info.findLongestWord();

        //TODO 2. 문자열 에서 가장 많이 나온 단어 top 3 (key : 단어, value : 횟수)
        //info.getFrequency();

        return info;
    }
}