숙제 : 자료구조 요리 레시피 메모장 만들기

커비·2024년 11월 13일
0

과제 해결

목록 보기
3/5

🚨 지시사항

입력값

  • 저장할 자료구조명을 입력합니다. (List / Set / Map)
  • 내가 좋아하는 요리 제목을 먼저 입력합니다.
  • 이어서 내가 좋아하는 요리 레시피를 한 문장씩 입력합니다.
  • 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.

출력값

  • 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
  • 이어서, 입력한 모든 문장 앞에 번호를 붙여서 입력 순서에 맞게 모두 출력해 줍니다.


문제 풀이

이전에 만든 요리 레시피 메모장은 Map을 선행학습하며 만들었다. 이번에는 Collection에 대해 직접 공부하고나니 순서가 있는 데이터의 집합을 사용하고 싶어서 List를 시도해보려고 한다.

이번엔 List를 선택한 이유

1주차 숙제 때에도 List를 사용해보고 싶었는데 Map을 공부해보니 넘버링도 함께 들어가는 점이 간편해서 Map을 선택했었다. 하지만 공부를 해보니 레시피는 순서가 정해져있기에 순서가 있는 데이터의 집합을 선택하는 편이 맞다고 생각이 들었다.


1️⃣ 자신있게 코드 작성해봤지만 생각지도 못한 💣폭탄을 맞음

package collection;

import java.util.ArrayList;

public class PorkKimchiData {
    public static void main(String[] args) {
        // 메뉴
        String foodMenu = "돼지고기 김치찜";

        // 선언 + 생성
        ArrayList<String> stringRecipe = new ArrayList<String>();

        // 레시피 추가
        stringRecipe.add("1. 다진마늘 1T, 생강즙 1T, 맛술2T, 후추를 넣고 섞어서 밑간 소스를 만든 후 돼지고기에 고르게 발라준다.");
        stringRecipe.add("2. 진간장 1T, 고춧가루 1T, 간 마늘 1T, 생강즙 1T, 김칫국물 3T, 설탕 1T, 후추를 섞어 양념장을 만들고 다시마 우린 물 550ml을 준비한다.");
        stringRecipe.add("3. 다시마 우린물 : 조각 다시마 4장을 물 550ml에 넣고 최소 30~40분을 두면 완성!");
        stringRecipe.add("4. 신김치의 속을 털어낸 후 국물이 약간 있는 상태로 준비한다. (잎이 큰 김치 추천)");
        stringRecipe.add("5. 김치 위에 밑간해놓은 삼겹살을 올리고 돌돌돌 말아주면서 고기가 옆으로 빠지지 않게 싸주면 된다.");
        stringRecipe.add("6. 만들어진 돼지고기 김치말이를 냄비 안에 차곡차곡 쌓아서 넣어준다.");
        stringRecipe.add("7. 만들어진 돼지고기 김치말이를 냄비 안에 차곡차곡 쌓아서 넣어준다.");
        stringRecipe.add("8. 뚜껑을 덮고 중불에서 25~30분 푹 끓여준다.");
        stringRecipe.add("9. 양파와 대파, 청양고추를 어슷 썰어서 넣고 10분을 중약불에서 끓여준다.");

        // 주의사항
        String caution = "⚠\uFE0F 주의 ⚠\uFE0F \n 김치찜 요리는 센불에서 끓이면 맛이 안나기에 중불 ~ 중약불로 푹 끓이는게 Point! (인덕션이라면 4~5단계)";

        // 출력
        System.out.println("\uD83D\uDCE3 커비 강력추천!\n" + "[" + foodMenu + "] " + "만들기");
        System.out.println(stringRecipe.toString());
        System.out.println("\n" + caution);
    }
}

내가 작성한 코드는 이렇게 된다.
Println을 썼기에 Integer를 출력했을 때처럼 한 줄씩 떨어질 것이라고 당연하게 생각하고 오히려 쉽다고 생각했었다. 그런데 이게 무슨 일일까?

입력하지도 않은 [] 가 앞, 뒤로 출력되고 모든 StringInline 마냥 붙어 있었다.


2️⃣ for문을 적용해서 출력해보자!

처음에는 for문으로 넘버링도 표기해볼까? 싶었는데 이미 stringRecipe에 직접 넘버링까지 포함해놓아서 그 부분은 마음을 접어두고,

  • 레시피가 한 줄로 출력
  • 레시피가 순서대로 출력

를 목표로 두고 for문을 작성했다.

for (int i = 0; i < stringRecipe.size(); i++) {
	System.out.println(stringRecipe.get(i));
}

stringRecipe만큼의 사이즈로 구성해서 i가 하나씩 늘어나 레시피가 출력되다가 stringRecipe 가 없을 때까지 출력하고 마무리 되도록 작성했다.

목표로 정한 2가지를 모두 충족했다!


3️⃣ 내가 저장한 자료구조명 입력!

// 자료구조명
String dataStructure = "List";

// 출력
System.out.println("\uD83D\uDCE3 커비 강력추천!\n" + "[ " + dataStructure + "로 " + foodMenu + "] " + "만들기");

자료구조명은 String으로 처리해서 출력하는 제목 사이에 넣어주었다.


출력결과


>> 자료구조 요리 레시피 메모장 GitHub Code 바로가기
다 만들어진 코드는 위의 깃허브에 올려놓았다.

profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글