숙제 : Java 요리 레시피 메모장 만들기 (+트러블 슈팅)

커비·2024년 11월 11일
0

과제 해결

목록 보기
1/5

🚨 지시사항

입력값

  • 내가 좋아하는 요리 제목을 먼저 입력합니다.
  • 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해 주세요. (ex. 3.5)
  • 이어서 내가 좋아하는 요리 레시피를 한 문장씩 10문장을 입력합니다.

출력값

  • 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
  • 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해 줍니다. (ex. 3)
  • 바로 뒤에 정수 별점을 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력해 줍니다. (ex. 60.0%)
  • 이어서, 입력한 모든 문장 앞에 번호를 붙여서 모두 출력해 줍니다.


문제 풀이

딱히 떠오르는 메뉴와 레시피가 없어서 저번주에 만들어먹은 '돼지고기 김치찜' 으로 적어보았다.
문제에서 주어지는 지시사항 외에 넣고 싶었던 부분은 !주의! 추가 코멘트가 있었다.

평소에 문항 속 몇가지 글자를 빼먹고 지내왔기에 이번에는 꼼꼼히 확인하며 풀었다.

나만의 레시피

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

1️⃣ 요리 제목을 괄호로 감싸서 출력

// 메뉴
String foodMenu = "돼지고기 김치찜";
System.out.println("\uD83D\uDCE3 커비 강력추천!\n" + "[" + foodMenu + "] " + "만들기");

Display를 꾸미는 것을 좋아해서 확성기와 개인적인 문구도 함께 추가해보았다.


2️⃣ 요리 별점을 소수점을 제외한 정수로만 출력 (ex. 3)

// 별점
double foodStarScore = 4.8;

// 별점 실수 ➡️ 정수
int intStarScore;
intStarScore = (int)foodStarScore;

입력값일 때에는 4.8로 출력되는 것을 확인했고
그 후에는 정수(int)로 형 변환하여 intStarScore 를 출력했다.


3️⃣ 바로 뒤에 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력 (ex. 60.0%)

// 최대 별점
int maxStarScore = 5;

// 별점 5점 만점을 기준으로 퍼센트 표현(실수로 표기)
double percentage = foodStarScore*100/maxStarScore;

System.out.println("별점 : " + intStarScore + " (" + percentage + "%)\n");

조금 더 변수를 활용하고자 하는 마음에 최대 별점인 maxStarScore 를 선언하고

척도를 환산하는 방법을 이용해 계산식으로 percentage 에 계산한 값이 들어가도록 설정했다.


4️⃣ 입력한 모든 문장 앞에 번호를 붙여서 모두 출력

이 부분에서 15~20분 정도의 고민과 구글링을 했다. HTML에서 ol과 li구조를 표현하면 자연스레 넘버링이 가능한 것처럼 Java에서도 가능하기에 문제를 낸 것이 아닐까 싶어서 고민 끝에 구글링을 했다.

String으로 표현하면 빠르게 해결이 가능했겠지만 공부삼아 새로운 방법을 찾고 싶었다.

첫 검색에는 넘버링 관련하여 알아보았는데 의도치 않게 좋은 블로그를 발견했다.

list, set, map의 존재를 알게되었고 이 중에 map이 적당하겠다는 판단을 하여 map의 key와 value를 사용하는 방법에 대해 알아보았다.

// 내용 넘버링
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "다진마늘 1T, 생강즙 1T, 맛술2T, 후추를 넣고 섞어서 밑간 소스를 만든 후 돼지고기에 고르게 발라준다.");
        map.put(2, "진간장 1T, 고춧가루 1T, 간 마늘 1T, 생강즙 1T, 김칫국물 3T, 설탕 1T, 후추를 섞어 양념장을 만들고 다시마 우린 물 550ml을 준비한다.");
        map.put(3, "다시마 우린물 : 조각 다시마 4장을 물 550ml에 넣고 최소 30~40분을 두면 완성!");
        map.put(4, "신김치의 속을 털어낸 후 국물이 약간 있는 상태로 준비한다. (잎이 큰 김치 추천)");
        map.put(5, "김치 위에 밑간해놓은 삼겹살을 올리고 돌돌돌 말아주면서 고기가 옆으로 빠지지 않게 싸주면 된다.");
        map.put(6, "만들어진 돼지고기 김치말이를 냄비 안에 차곡차곡 쌓아서 넣어준다.");
        map.put(7, "돼지고기 김치말이 위에 김치찜 양념과 다시마 우린 물을 넣어준다.");
        map.put(8, "뚜껑을 덮고 중불에서 25~30분 푹 끓여준다.");
        map.put(9, "양파와 대파, 청양고추를 어슷 썰어서 넣고 10분을 중약불에서 끓여준다.");
        Iterator<Integer> keys = map.keySet().iterator();
        
        while( keys.hasNext() ){
            Integer key = keys.next();
            String value = map.get(key);
            System.out.println(key + ". " + value);
        }
        System.out.println("\n" + caution);

내가 원하는 출력 형식을 고려해 StringInteger 로 바꾸면서 조금씩 원하는 코드로 만들어보았다.


출력결과

출력결과도 남겨놓는 편이 좋을 것 같아서 추가해보았다.


이 레시피 후회없이 맛있는 맛이니까 아주아주 강력 추천한다!


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

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

0개의 댓글