Study with book

    1. 도메인 모델 시작

    1.1 도메인이란? 내가 만들고 있느 서비스 혹은 소프트웨어가 영향력을 미치는 곳이며 즉 소프트웨어가 어떠한 문제를 해결하고자 하는 영역을 말합니다. 도메인은 다시 하위 도메인으로 나눌 수 있습니다. 하지만 도메인마다 모두 고정된 하위 도메인이 존재하는 것은 아닙니다. 쇼핑몰을 운영하고 있다면, E-Commerce가 나의 도메인 영역이 되는 것입니다. 그리고 쇼핑몰은 회원, 카테고리, 주문, 상품 등의 하위 도메인이 존재합니다. 모든 온라인 쇼핑몰이 고객 혜택을 제공하지 않으며 규모가 작은 업체는 엑셀과 같은 도구를 이용해서 수작업으로 정산을 처리할 수도 있습니다. 1.2 도메인 전문가와 개발자 간 지식 공유 코딩에 앞서 요구사항을 올바르게 이해하는 것이 중요합니다. 요구사항을 제대로 이해하지 않으면 변..

    [프로그래머스] 124나라의 숫자

    [124나라의 숫자] https://programmers.co.kr/learn/courses/30/lessons/12899 풀고 느낀점 내 머리로 풀 수 없는 문제였습니다. 한 2시간 고민하다가 구글링해서 풀이법을 봤습니다. Level 2 문제였는데 풀지 못하니 살짝 현타가 왔습니다. 3진법을 응용한 문제였습니다. 10진법의 값을 몫이 0일때까지 나누다가 나머지가 0인 경우 4로 대체하고 몫을 1만큼 빼주면 됩니다. 좀 더 내공을 쌓아야할 것 같습니다. /** * 124나라의 숫자 * https://programmers.co.kr/learn/courses/30/lessons/12899 */ public class P_12899 { public static void main(String[] args) { ..

    [프로그래머스] 행렬의 곱셈

    [행렬의 곱셈] https://programmers.co.kr/learn/courses/30/lessons/12949 풀고 느낀점 오랜만에 코테를 풀어서 그런지 생각보다 오래걸렸습니다. 한참 코테 문제를 풀 때 잘 안풀리면 무조건 디버그를 돌려서 차근 차근 보자라는 원칙이 있었는데 망각하고 머리속으로 계속 상상하면서 푸니까 더 오래 걸린 것 같습니다. 나중엔 결국 디버그 돌려서 풀었습니다. 갑자기 드는 생각인데 개발 툴 도움 없이는 절대 문제를 풀지 못할 것 같다는 생각이 들었습니다. 진짜 잘푸는 사람보면 툴 도움 없이 그냥 크롬에서 풀던데 그 경지는 절대 못갈 것 같습니다. 다시 일주일에 3코테 목표를 세웠습니다. 이직을 하고 나서 꽤 소홀했는데 다시 정신차려야할 것 같습니다. /** * 2차원 행렬 ..

    [프로그래머스] 더 맵게

    [더 맵게] programmers.co.kr/learn/courses/30/lessons/42626 풀고 느낀점 더 맵게는 쉽게 풀었습니다. 다른 Level2 정도의 문제보다 쉬워서 당황했습니다. 아니면... 제가 그만큼 실력이 향상된 것일까요? 그랬으면 좋을 것 같습니다. 풀이 방식은 우선순위 큐(힙)에다가 scoville 배열의 값을 하나씩 넣어줍니다. 그럼 heap은 우선순위에 맞게 정렬이 됩니다. heap에서 하나씩 데이터를 꺼내보면서 K보다 값이 작은지만 체크합니다. 작다면 섞은 음식의 스코빌 지수를 계산하는 공식을 적용해서 다시 heap에 넣어줍니다. K이상일 때 까지 반복합니다. package algorithms.online.programmers.heap; import java.util.Pr..

    [프로그래머스] 메뉴 리뉴얼

    [메뉴 리뉴얼] programmers.co.kr/learn/courses/30/lessons/72411 풀고 느낀점 이전부터 조합문제를 많이 풀고 있어서 그런지 생각보다 많이 어렵진 않았습니다. orders 배열로 들어온 문자열 배열에 대해서 나올 수 있는 조합을 구합니다. 예를 들어 1번 손님의 경우 [] [A] [B] [C] [F] [G] [A, B] [A, C] ...... 이렇게 나올 것입니다. 2번, 3번 손님도 마찬가지 입니다. 그리고 course 배열을 순회 돌면서 아까 구한 조합에서 course 개수랑 같은 개수를 가진 조합을 빼냅니다. course 의 값이 2이면, 1번 손님의 경우는 [A, B] [A, C] [A, F] .... 가 됩니다. 그리고 2번 손님, 3번 손님으로도 마찬가지로..

    [프로그래머스] 베스트앨범

    [베스트앨범] programmers.co.kr/learn/courses/30/lessons/42579 풀고 느낀점 프로그래머스 문제 설명이 상당히 불친절 한 것 같습니다. 다른 문제를 가져다가 번역을 한 것 같은데, 몇몇 설명이 누락된 부분도 있는 것 같습니다. 이번 문제를 읽고 예시를 봐도 return값이 왜 저렇게 나오는지 이해가 안되었습니다. 그래서 이번에도 문제 설명에 대한 힌트만 봤는데 각 장르마다 최대 2개씩 뽑는 부분이 설명에 빠져있었습니다. 계속 프로그래머스에서 코테연습을 진행해야할지 의문입니다. 그래도 카**에서 프로그래머스 플랫폼을 사용하니까 어쩔 수 없이 해당 사이트에서 연습을 진행해야할 것 같습니다. 문제 난이도는 중(?)정도였습니다. 그냥 자료구조 잘써서 잘 정렬해서 상위 2개 뽑..

    [2021 카카오 블라인드 온라인 코딩 테스트] 메뉴 리뉴얼

    [메뉴 리뉴얼] https://programmers.co.kr/learn/courses/30/lessons/72411 풀고 느낀점 어렵다는 느낌이 들었습니다. 문제 길이도 길어서 다 읽는데 시간 투자를 많이 했습니다. 그리고 어떻게 풀어야할지 생각하는 것도 시간이 많이 걸렸습니다. 1시간 30분 정도 걸려서 다 풀고 나 알고리즘 푸는 실력 쫌 는듯? 하고 레벨을 봤는데 2단계였습니다. 이게 프로그래머스에서 2단계에 해당한다는게 믿기지가 않았습니다. 아무래도 이번 생은 틀린 것 같다고 생각했습니다. 멘탈 좀 깨졌는데 계속하다보면 또 실력이 오를 거라고 믿어 의심하지 않습니다. 해당 문제는 모든 손님이 주문한 음식을 조합으로 모든 케이스를 구해서 리스트에 담아 놓았습니다. 그리고 해당 리스트를 완전탐색하면서..

    [프로그래머스] JadenCase 문자열

    [JadenCase 문자열] programmers.co.kr/learn/courses/30/lessons/12951 풀고 느낀점 문제만 봐도 쉬웠습니다. 바로 어떻게 풀어야할지 떠올랐는데, 이게 문제 설명이 불친절한 것인지 예제 케이스는 전부 통과했는데 실제 제출하니까 틀린 것들이 나왔습니다. 알고보니 공백처리를 잘 해줘야되는 것이였습니다. 문장을 공백으로 split을 할 때, 맨 첫글자 혹은 마지막 글자가 공백이면 무시가 되었습니다. 이 부분만 잘 체킹하면 쉽게 풀 수 있는 문제였습니다. 문제 설명 좀 친철하게 잘해주면 안될까요? 이런 예외 케이스를 생각해내는 것도 능력인지 모르겠습니다. 전 고민하다가 도저히 모르겠어서 힌트봤습니다. 기분이 좋지만은 않습니다.

    [프로그래머스] 영어 끝말잇기

    [영어 끝말잇기] https://programmers.co.kr/learn/courses/30/lessons/12981 풀고 느낀점 느낀건 쉬웠습니다. 문제를 읽자 마자 한 10분정도 생각하고 어떻게 물어야 할지 바로 떠올랐는데, 시간이 1시간 걸려버렸습니다. ^^;;; 2차배열로 만들어서 하나씩 순회하면서 Set 자료구조에 넣으면서 size가 다르면 중복되게 말한거니, 해당 index를 반환하면 끝이였습니다. 그런데 문제를 제대로 읽지 않아서 그런지, 끝말 잇기 규칙인 끝말이랑 시작말 체크하는 걸 빠뜨렸습니다. 실제 코딩 테스트 볼 때 진짜 주의해야겠습니다.

    [프로그래머스] 해시 > 위장

    [위장] programmers.co.kr/learn/courses/30/lessons/42578 풀고 느낀점 카카오 코딩테스트 너무 어려워서 프로그래머스에 코딩테스트 쪽으로 넘어와서 머리 식힐겸 위장 문제를 집었습니다. 그런데 머리가 더 아픕니다. 눈알도 빠질 것 같습니다. 딱 내용만 봐도 조합으로 구하는 문제여서 카카오 코딩테스트에서 조합도 한번 풀어봤겠다 생각하고 풀어봤습니다. 조합을 구하고 그냥 필터링만 하면 되는 것이라서 그렇게 어렵게 느끼진 않았습니다. 그런데 1번 등등의 예제에서 시간 초과가 일어났습니다. 이걸 뭐 캐시를 태워야하나 하고 생각을 하다가 도저히 모르겠어서 힌트를 봤습니다. 그런데 이거 공식으로 푸는 사람이 있었습니다. 아차 했습니다. 보니까 그냥 조합을 구하고 필터링 한 결과가 ..