Java 요리 레시피 메모장

song yuheon·2023년 8월 27일
0

Java

목록 보기
5/46
post-thumbnail
post-custom-banner

요구 사항

  1. 사용자로부터 저장할 자료구조명을 입력받는다. (List / Set / Map 중 하나)
  2. 사용자가 좋아하는 요리 제목을 입력받는다.
  3. 이후, 사용자가 좋아하는 요리 레시피를 한 문장씩 입력받는다.
  4. 입력을 마칠 때는 "끝" 문자를 입력한다.

출력 내용

  1. 입력이 종료되면, 저장한 자료구조 이름과 요리 제목을 출력한다.
  2. 이후, 입력한 레시피 내용 앞에 번호를 붙여서 순서대로 출력한다.

프로그램 분석

Sol2 클래스는 위의 요구사항을 구현하고 있다. 메인 메서드에서는 사용자의 입력을 처리하고, 입력한 자료구조에 따라 요리 레시피를 저장하는 로직이 구현되어 있다.

  1. List 선택 시: LinkedList를 사용하여 요리 레시피를 순서대로 저장하고 출력한다.
  2. Set 선택 시: LinkedHashSet을 사용하여 요리 레시피를 저장하고 중복을 허용하지 않으면서 순서대로 출력한다.
  3. Map 선택 시: HashMap을 사용하여 요리 레시피를 저장하고, 키로는 입력 순서를, 값으로는 레시피 내용을 저장한다.

실행 방법

  1. 프로그램을 실행한다.
  2. 저장할 자료구조를 선택한다. (예: List)
  3. 좋아하는 요리 제목을 입력한다. (예: 스파게티)
  4. 레시피의 각 줄을 차례대로 입력한다.
  5. 모든 레시피를 입력한 후 "끝"을 입력하여 종료한다.
  6. 프로그램은 선택한 자료구조와 제목, 레시피 내용을 출력한다.

소스 코드

package week02;

import java.util.*;

public class Sol2 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String choiceDataStructure = sc.nextLine();
        String cookingName = sc.nextLine();

        int i = 1,j=0;

        if(Objects.equals(choiceDataStructure,"List")){
            LinkedList<String> recipeList = new LinkedList<String>();
            while(true){
                String rows = sc.nextLine();
                if(Objects.equals(rows,"끝"))
                    break;
                recipeList.add(rows);
            }

            System.out.println("[ "+choiceDataStructure+" 으로 저장된 "+cookingName + " ]");
            while(!recipeList.isEmpty()){
                System.out.println(i+". "+recipeList.poll());
                i++;
            }

        }
        else if (Objects.equals(choiceDataStructure,"Set")) {
            LinkedHashSet<String> recipeSet = new LinkedHashSet<>();
            while(true){
                String rows = sc.nextLine();
                if(Objects.equals(rows,"끝"))
                    break;
                recipeSet.add(rows);
            }
            Iterator iterator = recipeSet.iterator();
            System.out.println("[ "+choiceDataStructure+" 으로 저장된 "+cookingName + " ]");
            while(j<recipeSet.size()){

                System.out.println(i+". "+iterator.next());
                i++;
                j++;
            }
        }
        else if (Objects.equals(choiceDataStructure,"Map")) {
            Map<Integer,String> recipeMap = new HashMap<>();
            while(true){
                String rows = sc.nextLine();
                if(Objects.equals(rows,"끝"))
                    break;
                recipeMap.put(j,rows);
                j++;
            }
            System.out.println("[ "+choiceDataStructure+" 으로 저장된 "+cookingName + " ]");
            for (int k = 0; k < recipeMap.size(); k++) {
                System.out.println((k+1)+". "+recipeMap.get(k));
            }

        }

    }
}
profile
backend_Devloper
post-custom-banner

0개의 댓글