안녕하세요 큰돌님! 백준 알고리즘 문제를 풀다 보면, 자꾸 최적화 욕심이 나곤 합니다. “이렇게 하면 더 나을 것 같은데?” 하며 풀다보면 시간이 꽤 흐르기도 합니다. 취업을 위한 코딩 테스트 공부에서는 단순히 문제의 의도에 맞춰 통과하는 것을 목적으로 해야 할까요? 아니면 더 효율적이고 확장 가능한 방법을 고민해보는 것도 의미가 있을까요? 아래 코드는 큰돌님 코드보다 빠르게 동작하긴 하지만, 문제가 변형되어 예를 들어 N=10이 아니라 N=100이고, 필요한 평수가 5가 아니라 10평인 경우에도 가격을 미리 계산하고 정렬(sorting)하는 방식이 여전히 효율적일지는 잘 모르겠습니다. 문제를 풀 때 주어진 조건보다 더 확장 가능한 상황까지 신경을 쓰고 싶은데 아직 방법이 떠오르지는 않는 것 같습니다. 이런 고민은 점차 후반 주차 문제를 풀면서 자연스럽게 해결되는 문제일까요? 아니면 현재 단계에서도 고민해 보는 것이 바람직한 걸까요? 조언 주시면 정말 감사하겠습니다! https://www.acmicpc.net/source/88073260 #include <bits/stdc++.h> using namespace std; struct Land { int price; int y; int x; }; bool isValid(const Land& a, const Land& b) { return abs(a.x - b.x) + abs(a.y - b.y) >= 3; } int p[10][10]; int N; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> N; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cin >> p[i][j]; } } vector<Land> flowers; for (int i = 1; i < N - 1; i++) { for (int j = 1; j < N - 1; j++) { int price = p[i][j] + p[i - 1][j] + p[i + 1][j] + p[i][j - 1] + p[i][j + 1]; flowers.push_back({price, i, j}); } } sort(flowers.begin(), flowers.end(), [](const Land& a, const Land& b) { return a.price < b.price; }); int minCost = INT_MAX; int flowerCount = flowers.size(); for (int i = 0; i < flowerCount - 2; i++) { for (int j = i + 1; j < flowerCount - 1; j++) { if (!isValid(flowers[i], flowers[j])) continue; int currentCost = flowers[i].price + flowers[j].price; for (int k = j + 1; k < flowerCount; k++) { if ((currentCost + flowers[k].price) >= minCost) break; if (!isValid(flowers[i], flowers[k]) || !isValid(flowers[j], flowers[k])) continue; minCost = currentCost + flowers[k].price; } } } cout << (minCost == INT_MAX ? -1 : minCost) << '\n'; return 0; }
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 어떤 알고리즘을 학습하고 계신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊 안녕하세요 현재 2-10 수강중에 있습니다! 문제 풀면서 예제 문제에서 링크드리스트 구현은 딩코딩코님이 제공해주고 계신데요. 실제 코딩테스트를 봤을 때 링크드리스트 구현은 직접해야하는걸까요?
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 영한님. 좋은 강의 만들어주셔서 감사합니다. 자바로드맵부터 지금까지 쭉달려 스프링 jpa 로드맵까지 마무리할 예정인데 공부하는 와중 고민이 생겨 글 남깁니다. 제가 아직 프로젝트라는 것을 해본 경험없이 알고리즘 공부만 하다가 백엔드 개발자로 진로를 정해 영한님 강의를 자바 기초부터 정주행하고 있습니다. 제 질문은 빠르게 강의를 정주행하고나서 프로젝트를 진행하며 모르거나 헷갈리는 부분을 복습하는 것이 좋을지 아니면 시간을 가지고 프로젝트를 하면서 강의를 병행하는게 좋을지 고민입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하십니까 선생님, 이 문제 보자마자 bfs보단 dfs가 먼저 생각이 났고 머릿속에서도 dfs로 시뮬레이션 해보니까 과정이 잘 그려져서 dfs로 진행을 했습니다. 링크 : http://boj.kr/020903cff23948a9be3332ad6a3787fb 그러고 강의를 보니, 큐를 두 개나 만들어서 bfs로 푸시는 과정이 제가 작성한 코드보다 메모리도 훨씬 적게 사용하고 시간도 빠른 걸 보고 어떻게 바로 저런 생각이 들어서 문제를 풀 수 있는지 신기하면서도 제가 과연 시험장에서 비단 이 문제뿐만이 아니라 어떤 문제에 대해서 최대한 메모리를 적게 사용하며 시간도 적게 걸리는 풀이로 풀 수 있을지 고민이 많이 됩니다. 조언 부탁드립니다..
제가 오늘까지 할인이여서 강의들을 구매할려고 합니다. 저는 스프링 무료강의를 듣고 스프링을 더 공부해봐야겠다는 생각이 들었고 무조건 서버개발자가되어야겠다라고 마음먹은 상황은 아닙니다. 나름 작동하는 웹사이트(비즈니스 로직이 있는)를 한번 만들어서 제 적성을 제대로 확인해보고 싶은 마음이 큽니다. 야생형코스로 스프링 기본강의(유료)->웹mvc->스프링db 모두듣고 이후 스프링jpa 1편 까지 다 결재를 해야할까요? 결재를 하기전에 가격때문에 좀 신중해집니다 ㅠㅠㅠㅠㅠ 여기서 (1)중간에 스프링 db들만 제외하고 웹사이트 만들어보는것도 가능하지 않을까요? (2)아니면 웹mvc2편만 스프링db2편만 제외하고 듣는것도 가능할까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 저도 선생님하고 같은 생각으로 접근했고 비슷하게 코드를 짤려고 했습니다. 하지만 1시간 2시간 넘어 가니까 이거는 강의봐야겠다라는 생각을 했습니다. 강의를 보고 좀만 더 생각해볼걸 그랬나라는 아쉬움이 강하게 드는데 선생님은 이럴 때 좀만 더 고민하면 풀릴거 같으면 몇시간이고 풀릴 때 까지 계속 하시나요???
안녕하세요, 강사님. 강의 잘 듣고 있습니다. 강사님의 목소리가 어디선가 들었던 것 같아 더 반가웠습니다. 저는 SW 학부를 졸업했지만, 공부를 할수록 점점 어려워지고 흥미가 떨어져 결국 포기하려 했습니다. 그러던 중 교수님 추천으로 지금의 회사에 입사하게 되어 IT 부서에서 비개발 업무를 맡아 일하고 있습니다. 그동안 회사를 다니면서 개발자가 되기로 결심하게 되었고, 그런 면에서 제게 좋은 기회였다고 생각합니다. 그래서 본격적으로 개발 공부를 시작했습니다만, 직장을 다니며 평일, 주말에 공부하는 게 쉽지는 않더군요. 백엔드 공부를 처음 시작할 때는 Java와 Spring MVC부터 시작했습니다. 그런데 점차 공부하다 보니 배워야 할 기술들이 가지처럼 뻗어나가더군요. 그만큼 기술 하나하나를 따라가며 공부하다 보니 어느덧 1년이 넘었습니다. 그래도 꾸준히 이어올 수 있었던 이유는 저 나름의 목표가 있었고, 새로운 것을 배우는 재미도 있었기 때문인 것 같습니다. 아마 취업 후에도 평생 공부가 필요하겠지만, 그래서 지금 미리 습관을 들이는 게 오히려 좋은 일이라 생각합니다. 여기까지는 그냥 TMI네요. 😊 결론적으로 저는 완벽주의적인 성향 때문에 여러 기술을 충분히 알아야 한다는 생각이 강박으로 작용해 시간 소요가 커지고 있습니다. 이번 강의를 들으면서 새로운 기술을 익히는 것도 좋지만, 어디서 멈춰야 할지 타이밍을 놓칠 것 같아 고민입니다. 현재 진행 중인 프로젝트를 바탕으로 도메인 모델링을 잘 활용해 포트폴리오로 정리하고 싶습니다. 신입 백엔드 포트폴리오는 어느 정도 수준이 적합한지, 기준에 대한 조언을 듣고 싶습니다. 단순히 이직이 아니라 개발을 제 업으로 삼는 것이 목표입니다. 현재 직장에서의 연봉은 약 4천만 원 정도지만, 연봉보다도 개발자가 되는 것이 저에겐 더 큰 행복일 것 같습니다. 내향적인 성격이라 이런 글을 적는 것도 처음이지만, 강의에서 많은 영감을 받아 제 고민을 나누게 되었습니다. 감사합니다.
https://velog.io/@dlsrjsdl6505/MySQLDataJpaTest-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0 @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 위 블로그 글 같이 @DataJpaTest(showSql = true) 하단에 위 어노테이션을 붙여 주시면 됩니다. 블로그 글을 요약하면, 기본 설정이 인메모리 DB로 잡혀 있어 dataSource가 연결되지 않는 것입니다.
안녕하세요 큰돌님. 저번에 비슷한 고민을 올렸었는데 아직 고민인게 있어서 남깁니다. 현재 개발 공부를 3개월째하고 있고 c언어와 자료구조 공부를 하고나서 큰돌님 강의를 듣고 있어요. 2-E 문제부터는 저번에 말씀드린 것처럼 1시간 이상을 고민해도 코드 구현을 하지 못하는 문제들이 거의 대다수이네요. 현재는 고민 해보는 시간은 가지고 나서 큰돌님 영상보고 따라 쳐보고 다시 영상보고 한줄 한줄 분석하면서 1, 3, 7, 21일 기준으로 문제를 30분내에 풀때까지 복습중인데. 이렇게 하면 문제를 암기를 하는게 아니인지, 이런 방식으로 계속해도 되는지가 궁금해서 다시 질문 남깁니다. 다른 공부를 하고 돌아와야할까요 아니면 이런 식으로 우직하게 진행하면 알고리즘 실력이 늘까요? 좋은 강의 감사합니다.