- 284
- 509 761
하루코딩
South Korea
เข้าร่วมเมื่อ 8 ก.ย. 2020
코딩테스트와 IT를 주제로 함께 공부하고 소통해요😃
* Do it! 알고리즘 코딩 테스트
[자 바] search.shopping.naver.com/book/catalog/32490707452
[파이썬] search.shopping.naver.com/book/catalog/33938438618
[ C++ ] search.shopping.naver.com/book/catalog/36645841620
e-mail : jk5020kim@naver.com
* Do it! 알고리즘 코딩 테스트
[자 바] search.shopping.naver.com/book/catalog/32490707452
[파이썬] search.shopping.naver.com/book/catalog/33938438618
[ C++ ] search.shopping.naver.com/book/catalog/36645841620
e-mail : jk5020kim@naver.com
JAVA 알고리즘 코딩테스트 - 실버4. Day5 (25분, 문제 풀이 - 듣보잡, 균형잡힌 세상)
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의
백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다.
[타임라인]
00:00 BOJ1764 듣보잡
16:00 BOJ4949 균형잡힌 세상
백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다.
[타임라인]
00:00 BOJ1764 듣보잡
16:00 BOJ4949 균형잡힌 세상
มุมมอง: 29
วีดีโอ
JAVA 알고리즘 코딩테스트 - 실버4. Day4 (29분, 문제 풀이 - 요세푸스 문제, 덱)
มุมมอง 409 ชั่วโมงที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1158 요세푸스 문제 10:49 BOJ10866 덱
JAVA 알고리즘 코딩테스트 - 실버4. Day3 (33분, 문제 풀이 - 체스판 다시 칠하기, 숫자 카드 2)
มุมมอง 5716 ชั่วโมงที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1018 체스판 다시 칠하기 21:20 BOJ10816 숫자 카드 2
JAVA 알고리즘 코딩테스트 - 실버4. Day2 (20분, 문제 풀이 - 한수, 제로)
มุมมอง 79วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1065 한수 13:00 BOJ10773 제로
JAVA 알고리즘 코딩테스트 - 실버4. Day1 (30분, 문제 풀이 - 설탕배달, 괄호)
มุมมอง 9814 วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ2839 설탕배달 20:05 BOJ9012 괄호
JAVA 알고리즘 코딩테스트 - 실버5. Day20 (26분, 문제 풀이 - 수 정렬하기 4, 생일)
มุมมอง 7414 วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ11931 수 정렬하기 4 10:40 BOJ5635 생일
JAVA 알고리즘 코딩테스트 - 실버5. Day19 (28분, 문제 풀이 - 직사각형 네개의 합집합의 면적 구하기, 폴리오미노)
มุมมอง 8121 วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ2669 직사각형 네개의 합집합의 면적 구하기 12:50 BOJ1343 폴리오미노
JAVA 알고리즘 코딩테스트 - 실버5. Day18 (28분, 문제 풀이 - 점수 계산, 올림픽)
มุมมอง 8821 วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ2018 점수 계산 15:30 BOJ18979 올림픽
JAVA 알고리즘 코딩테스트 - 실버5. Day17 (32분, 문제 풀이 - 문서 검색, 알고리즘 수업 - 점근적 표기 1)
มุมมอง 9428 วันที่ผ่านมา
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1543 문서 검색 22:12 BOJ24313 알고리즘 수업 - 점근적 표기 1
JAVA 알고리즘 코딩테스트 - 실버5. Day16 (22분, 문제 풀이 - 거스름돈, 카드1)
มุมมอง 64หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ14916 거스름돈 11:20 BOJ2161 카드1
JAVA 알고리즘 코딩테스트 - 실버5. Day15 (32분, 문제 풀이 - 행렬곱셈, 중복 빼고 정렬하기)
มุมมอง 77หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ2740 행렬곱셈 15:00 BOJ14916 중복 빼고 정렬하기
JAVA 알고리즘 코딩테스트 - 실버5. Day14 (28분, 문제 풀이 - 배열 합치기, 최소공배수)
มุมมอง 82หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ11728 배열 합치기 15:30 BOJ13241 최소공배수
JAVA 알고리즘 코딩테스트 - 실버5. Day13 (40분, 문제 풀이 - 뒤집기, 2차원 배열의 합)
มุมมอง 125หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1439 뒤집기 16:00 BOJ2167 2차원 배열의 합
JAVA 알고리즘 코딩테스트 - 실버5. Day12 (25분, 문제 풀이 - 회사에 있는 사람, 돌 게임)
มุมมอง 69หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ7785 회사에 있는 사람 09:40 BOJ9655 돌 게임
JAVA 알고리즘 코딩테스트 - 실버5. Day11 (27분, 문제 풀이 - 막대기, 재귀함수가 뭔가요?)
มุมมอง 235หลายเดือนก่อน
#알고리즘 #코딩테스트 #자바 #JAVA #코딩강의 #알고리즘강의 백준 온라인 저지에서 난이도를 높여가는 방식으로 문제를 풀어나가는 코딩 역량 향상 시리즈 입니다. [타임라인] 00:00 BOJ1094 막대기 11:40 BOJ17478 재귀함수가 뭔가요?
JAVA 알고리즘 코딩테스트 - 실버5. Day10 (20분, 문제 풀이 - 수들의 합, 날짜 계산)
มุมมอง 122หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day10 (20분, 문제 풀이 - 수들의 합, 날짜 계산)
JAVA 알고리즘 코딩테스트 - 실버5. Day9 (20분, 문제 풀이 - 너의 평점은, 방 번호)
มุมมอง 100หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day9 (20분, 문제 풀이 - 너의 평점은, 방 번호)
JAVA 알고리즘 코딩테스트 - 실버5. Day8 (24분, 문제 풀이 - 팩토리얼 0의 개수, 집합)
มุมมอง 106หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day8 (24분, 문제 풀이 - 팩토리얼 0의 개수, 집합)
JAVA 알고리즘 코딩테스트 - 실버5. Day7 (26분, 문제 풀이 - 숫자 카드)
มุมมอง 902 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day7 (26분, 문제 풀이 - 숫자 카드)
JAVA 알고리즘 코딩테스트 - 실버5. Day6 (22분, 문제 풀이 - 좌표 정렬하기 2, 색종이)
มุมมอง 1262 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day6 (22분, 문제 풀이 - 좌표 정렬하기 2, 색종이)
JAVA 알고리즘 코딩테스트 - 실버5. Day5 (20분, 문제 풀이 - 영화감독 숌, 덩치)
มุมมอง 902 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day5 (20분, 문제 풀이 - 영화감독 숌, 덩치)
JAVA 알고리즘 코딩테스트 - 실버5. Day4 (21분, 문제 풀이 - 소트 인사이드, 나이 순 정렬)
มุมมอง 702 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day4 (21분, 문제 풀이 - 소트 인사이드, 나이 순 정렬)
JAVA 알고리즘 코딩테스트 - 실버5. Day3 (21분, 문제 풀이 - 분수찾기, 좌표 정렬하기)
มุมมอง 1082 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day3 (21분, 문제 풀이 - 분수찾기, 좌표 정렬하기)
JAVA 알고리즘 코딩테스트 - 실버5. Day2 (29분, 문제 풀이 - 크로아티아 알파벳, 단어 정렬)
มุมมอง 1022 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day2 (29분, 문제 풀이 - 크로아티아 알파벳, 단어 정렬)
JAVA 알고리즘 코딩테스트 - 실버5. Day1 (30분, 문제 풀이 - 그룹 단어 체커, 셀프 넘버)
มุมมอง 1662 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - 실버5. Day1 (30분, 문제 풀이 - 그룹 단어 체커, 셀프 넘버)
JAVA 알고리즘 코딩테스트 - Bronze1. Day20 (24분, 문제 풀이 - 싸이클, 애너그램)
มุมมอง 822 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - Bronze1. Day20 (24분, 문제 풀이 - 싸이클, 애너그램)
JAVA 알고리즘 코딩테스트 - Bronze1. Day19 (24분, 문제 풀이 - 한조서열정리하고옴ㅋㅋ, 소가 길을 건너간 이유 1)
มุมมอง 932 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - Bronze1. Day19 (24분, 문제 풀이 - 한조서열정리하고옴ㅋㅋ, 소가 길을 건너간 이유 1)
JAVA 알고리즘 코딩테스트 - Bronze1. Day18 (18분, 문제 풀이 - 0의 개수, 가장 큰 금민수)
มุมมอง 663 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - Bronze1. Day18 (18분, 문제 풀이 - 0의 개수, 가장 큰 금민수)
JAVA 알고리즘 코딩테스트 - Bronze1. Day17 (34분, 문제 풀이 - 나무 조각, 딱지놀이
มุมมอง 803 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - Bronze1. Day17 (34분, 문제 풀이 - 나무 조각, 딱지놀이
JAVA 알고리즘 코딩테스트 - Bronze1. Day16 (17분, 문제 풀이 - 컵홀더, 나머지와 몫이 같은 수)
มุมมอง 573 หลายเดือนก่อน
JAVA 알고리즘 코딩테스트 - Bronze1. Day16 (17분, 문제 풀이 - 컵홀더, 나머지와 몫이 같은 수)
감사합미다
부분합 설명해주시니까 이해가 넘 잘돼요 :) 잘 배워 갑니당!
고맙습니다
Do it 알고리즘(자바편) 사놓고 처음부터 많이 막혀서, 이 프로젝트 첫 강의때 브론즈1정도 다 풀고 들어가면 좋을 것 같다고 하셔서 강의 순서대로 영차영차 풀어서 여기까지 왔네요!! 얼른 브론즈2 1 다 풀고 감각 올려서, 알고리즘 이론다운 이론 배워서 문제 적용해보고 싶습니다!! 혼자 했으면 분명 막막했을텐데 이렇게 길잡이가 있으니 너무 좋네요!! 다시 한번 감사 인사 드리고 열심히 따라가겠습니다!!!! 아참 그리고 이 프로젝트 이 코딩테스트라는 제도가 망하지 않는 이상 조회수는 보장될 거 같아요 약간 장기투자 느낌이랄까...ㅎㅎ(안그래도 조회수 안나온다고 하시길래....ㅋㅋㅋ), 제가 컴공 내년에 2학년 군복학하는 학생이라 알고리즘 스터디에 들어가 있는데요!! 유튜브에 백준 문제풀이 티어별로 맞은사람 많은 순으로 차근차근 풀어주는 유튜버가 있다고~ 알고리즘 공부하는 사람들끼리는 서서히 입소문 퍼지는 것 같던데요?!! 영상 수가 많으니 코테준비하는 사람들이 하나씩 찾아보며 조회수가 어느순간 우상향으로 올라가는 프로젝트가 되길 기원하며 파이팅입니다!! 저도 열심히 따라갈게요 감사합니다.
좋은 말씀 감사드려요. ~ 저도 응원하겠습니다!! 즐거운 저녁 되세요 :)
이번 강의도 넘 좋아요~ 많이 배워갑니다❤
안녕하세요 선생님, 좋은 강의와 책 잘 보고 있습니다~ 혹시 백트래킹 설명해주시는 이론 강의도 있을까요?
안녕하세요. 아쉽게도 현재는 없습니다. 추후 개정판에 백트레킹을 추가할까 생각중인데.. 아마 내년봄정도의 시기여서 그때 영상을 만들것같습니다^^~ 즐거운 주말되세요!!
잘 보고 갑니닷
예제에서 1에서 3으로 가는 최단 거리를 구한다고 치면 3->1로 가는 음의 가중치 엣지가 하나 더 있으면 N이 5이니 4번 돌리면 2번 왔다갔다 하는 음수 사이클(1->3-1>-3)을 탈 것 같은데 그러면 의도했던 정답이 아닐 것 같은데... 이러면 5번 이상 안돌려도 음수 사이클을 타지 않나요? 벨만포드를 사용할 수 있는 그래프꼴이 따로 있는건가요?
안녕하세요. 반갑습니다. :) 제가 질문을 정확하게 이해하지는 못한것 같지만 설명을 드려보면 벨만포트 알고리즘은 음수 가중치가 있는 사이클의 최단거리를 구하는 알고리즘입니다. 단 말씀하신대로 음수사이클이 존재하게 되면 실제 최단거리는 해당 음수사이클을 돌수록 계속 작아지기 때문에 최단거리를 구하는 것이 불가능합니다. 다만 실제 문제들은 이러한 음수사이클을 찾아내는 것을 유도하는 경우가 많이 있습니다. 즉 벨만포트 알고리즘은 음수가중치가 있는 그래프의 최단거리를 찾거나 (음수사이클이 없는경우) 아니면 음수사이클 유무를 찾아내는 알고리즘이 됩니다. 5번이상 안돌려도 음수사이클을 타지 않나요? <- 해당 말씀은 만약 말씀하신것처럼 예제를 수정하면 맞습니다. 다만 예제가 아닌 모든 형태의 음의 가중치가 있는 그래프에서 음수사이클 유무를 판단할때에는 N-1번 돌린후 ( 모든 노드의 최단거리 구하고 ) 한번더 돌려주어야 예외없이 음수사이클 유무를 판단할 수있습니다. 2번만에 사이클을 찾는 경우의 그래프도 존재하지만 3번만, 4번만... 마지막 N번을 돌렸을 떄 음수 사이클을 찾는 그래프 형태가 존재하지 때문입니다. 답변이 되었는지 모르겠네요 즐거운 주말되세여!
@@codingtest 아 답변 감사합니다. 저는 벨만포드 알고리즘이 음수 사이클이 존재한다고 해도 특정 최단 경로에서 모든 간선을 1번 이하로 사용하여서 모든 정점의 최단거리를 구하는 방법이라고 착각해서 나온 질문이었습니다. 그 뒤에 다른 블로그랑 자료들도 찾아봤는데 말씀 해주신 것처럼 음수 사이클을 탄 이후에서의 최단거리를 상정한 알고리즘이 아니었네요. 답변 감사합니다. 책 잘 읽고 있습니다!
잘 보고 있어요! 색종이 문제 재밌네요😮
좀 오랜 영상이라 보실지는 모르겠지만 해당 BackTracking에서 재귀하는 과정에서 제가 궁금한 부분이 만약 덧셈이 2개이고 숫자가 1,2,3,4,5일 경우 덧셈이 1+2와 4+5에 쓰일 수도 있나요? 재귀 과정에서 보면 index는 +1씩 증가하여 제가 생각하기엔 +을 사용할 경우 연속으로밖에 사용하지 못할 것 같은데, 만약에 그렇지 않다면 어떤 방법으로 +이 처음과 끝에 쓰일 수 있는지 설명 부탁드립니다!!
음 이게 TEXT로 설명하기에는 약간 애매할수 있는데 한번 말씀드려보겠습니다. !! 먼저 제 생각에는 재귀함수가 어떻게 수행되는지 먼저 떠올리시고 생각해보면 좋을것 같습니다. 예를들어 말씀하신 예제에서 +가 2개 -가 2개가 있다고 가정하면 처음 시작은 아래에서 시작됩니다. DFS(num[0], 1); <- 의 의미는 아직 기호가 안들어간 상태입니다. 그다음 if문에서 +를 선택합니다. 그다음은 + + 상태가 됩니다. 여기가 중요한데 아래 if가 아니라 재귀로 들어가니까 들어가서 또 첫번째 if로 들어가는 것입니다. 그다음이 또 재귀로 들어가서 +가 있는지 확인하는데 더이상 없으니까. 다음 if문인 - 로 들어갑니다. ( + + - 상태 ) 여기도 재귀니까 다시 처음 if인 + 가 있는지 확인하고 없으니까 다음 if인 -를 선택하고 ( + + - - ) 상태 또 재귀로 들어갑니다. 근데 이번에는 index == N 이기 때문에 아래로 안내려가고 리턴이 됩니다. => 여기까지 하면 + + - - 상태가 하나 후보로 나오죠. 그다음은 재귀를 빠져나옵니다. + + - 상태 !!!! 여기에서 빠져나온 위치는 어디인가여? if(operator[1]>0){ operator[1]--; System.out.print("-"); DFS(now-num[index], index+1); 이 DFS를 빠져나온것입니다. 그럼 자연스럽게 뒤에 곱하기 나누기 if를 확인하는데 없기때문에 또 DFS를 빠져나옵니다. + + 상태 <- 여기도 -로 들어간 아이이기 때문에 아까 위치에서 시작하지만 그 뒤 곱하기 나누기가 없음으로 빠져나옵니다. + 상태 <- 여기에서 빠져나오는 곳은 어디일까요? + if문의 재귀 호출 다음줄입니다. if(operator[0]>0){ operator[0]--; System.out.print("+"); DFS(now+num[index], index+1); operator[0]++; // <- 여기 그럼 여기에서 이제 다음 if를 자연스럽게 갑니다. -가 있나 봅니다. 현재 -는 2개가 있습니다. 재귀로 들어갑니다. + 상태에서 -> + - 상태로 변경 재귀에서 또 제일 위 if부터 진행 -> + - + 상태로 변경 이런식으로 동작을 하는 원리를 알게 되시면 아마 이해가 되실겁니다. 이제 그냥 탐색 순서를 막 써보면 ( 그냥 손으로 쓰는거라 틀릴수도 있으니 감안하고 원리만 생각하면서 보세여 ^^) + + + + + - + + - - + + - + + + - + + - + - + - + + - + - - + - - + + - - + - + - - + - + + - + + - 이런식으로 아마 돌게 될 것입니다. 재귀의 특성을 이해하시면 도움이 되시지 않을까 싶습니다. if문에서 DFS 함수가 불리면 다음 코드로 넘어가는게 아니라 자기 자신을 호출하여서 처음 코드부터 돌고 이것을 트리로 표현하면 깊이로 계속 될때까지 들어가는.. ~ 도움이 되셨으면 좋겠습니다. 좋은 저녁되세여 !!
@@codingtest 세상에 이렇게 친절히 설명해주셔서 감사합니다 +와 - 정리해주신거 보니 바로 이해가 갔어요 재귀를 하는 과정에서 operator 배열을 확인하고 없으면 한바퀴 돌고 operator에 해당하는 index를 --;를 통해 지우고 다음 연산자를 찾으면서 모든 경우의 수를 만들 수 있겠네요 친절한 설명 감사합니다!
계속해주세요 ㅠㅠ 혼자 하기 자꾸 쳐지는데.. 강의 있어서 좋아요 ㅠㅠㅠ 좋은 강의 감사합니다 😀
제가 감사합니다!! 힘내세요 :)
질문있어요. 문제 예문에 있는 바깥쪽 for문 인덱스 i 범위가 1~ N-1 까지가 맞지 않나요? N+1 이면 성립이 안되는거 같아서요. 추가로 N이 배열의 크기라면 0번 인덱스를 사용하지 않기 때문에 A배열 크기가 N+1이 맞는거죠? 예문 코드가 생략되서 헷갈리네요.
안녕하세요 :) 반갑습니다. 먼저 예문은 아마도 BOJ와 동일하게 기재되어 있는데 (www.acmicpc.net/problem/1377) 질문 주신것을 보고, 예문에 대하여 다시한번 살펴보았습니다!! 주요 조건식이 아래 4줄정도라고 생각됩니다. for (int i=1; i<=N+1; i++) { for (int j=1; j<=N-i; j++) { if (A[j] > A[j+1]) { swap(A[j], A[j+1]); 코드가 약간 불진철한 느낌이 있는데, 문제가 되지는 않아보입니다. 먼저 실제 A배열에 인덱스의 기준은 j가 되는데 가장 바깥의 for문 i == N+1인경우에는 아래 for문이 int j=1; j<=-1 이기때문에 아예 실행되지 않을 것이라고 생각하였습니다. 하지만 조금 더 버블 정렬에 대하여 생각해보면 N=5라고 가정하였을때 i가 5가 되는 순간 더 이상의 Swap이 일어나지 않아서 전체 반복문을 빠져나오게 됩니다. 예시로 => -1 5 4 3 2 1 (0번째는 안쓰는 index)를 생각해보면 위 코드로 하면 i = 1로 반복문 실행 [-1, 4, 3, 2, 1, 5] i = 2로 반복문 실행 [-1, 3, 2, 1, 4, 5] i = 3로 반복문 실행 [-1, 2, 1, 3, 4, 5] i = 4로 반복문 실행 [-1, 1, 2, 3, 4, 5] i = 5로 반목문 실행 [-1, 1, 2, 3, 4, 5] (동일함 swap일어나지 않아 종료) 아마도 구독자님께서는 이 부분까지 생각해보시고 말씀해주신거같아요!! (N-1까지가 맞지 않냐고 질문해주신것으로 보아 ~ ) 그런데 만약에 위의 예시를 적용하여 보면 N-1로 하였을 경우 마지막까지 Swap이 일어나기 때문에 아래 if (changed == false) { System.out.println(i); break; } 출력문이 출력되지 않아서 (정렬은 다 잘 됩니다!!) 그런게 아닐까 하는 생각이 듭니다. 굳이 N이 아닌 N+1로 한 이유는 무엇일까도 생각해보았는데... "어짜피 N이상하면 정렬은 무조건되 그 전에 어짜피 if문에서 반목문이 빠져나가니까 더 크게해도 상관없음..? 의 느낌이 아닐까 하는 생각을 해보았습니다." 도움이 되셨으면 좋겠습니다. ~ 즐거운 주말 마무리 하세여!
@@codingtest 자세히 설명해주셔서 감사합니다. 이제 알겠네요.
첫번째 문제에서 2번째 int형 배열을 선언만 하고 초기화 안하면 기본값이 0이라서 따로 int형 배열 S를 초기화 안하신걸로 이해해도 될까요?
네 맞습니다!! 조금더 정확하게 말씀드리면 배열에서 new int[10] 이러한 선언이 자료형에 따라 자동초기화를 하여줍니다! int형은 0으로 될것같습니다!! 좋은주말 되세요:)
오랜만에 보는데 드디어 실버 단계로 넘어왔군요 ㅠㅠ
하루코딩님 없으면 저 취업 못합니다.
에이.. 아닙니다~ 사청해주셔서 제가 감사합니다!! 좋은하루되세요~:)
알고리즘 공부한다고 하면 다들 정렬, DFS 이런거 먼저 알려주던데... 혼자풀다가 브론즈3에서 자꾸 막히는 저에게 너무 고마운 강의네요.... 천천히 사소한 디테일들 배워가면서 쭉쭉 나가보겠습니다 초보자를 위한 강의 감사합니다!!! 혹시 Do it! 코딩테스트 자바편에 나오는 내용들은 브론즈 몇정도 문제를 풀 수 있을때 공부해보면 좋을까요? 내용들 관련 문제 등급들 보니 들쭉날쭉 하길래 여쭤봅니다
안녕하세요! 반갑습니다:) 아마 개인차가 있지만 브론즈1까지 풀어보시고 시작하면 좋지않을까 싶습니다^^ 즐거운 하루되세요!! :)
@@codingtest 넵 감사합니다 좋은하루되세요!!
16:46
안녕하세요, 평소에 영상 잘 보고 있습니다. 혹시 왜 N의 제곱근까지만 반복문을 돌리는지 물어봐도 될까요 ? 시간 복잡도 떄문일거라는 생각도 하긴했습니다. 정수론에서 소수를 N의 제곱근으로만 돌려서 찾는것과 비슷한 논리일까요?
안녕하세요!! 반갑습니다. :) 네 이해하고 계신것이 정확합니다. 소수 구하기와 마찬가지로 N의 제곱근까지만 반복문을 돌려도 N범위안에 오일러피를 구할 수 있기 때문입니다. 감사합니다. 즐거운 한주 시작되세여 !
진짜 미친강의네요... 다른 강의듣고 이해안되서 계속 돌다가 너무 설명을 잘해주셔서 도움이 많이 됫습니다!
시청해주셔서 제가 감사합니다~ 즐거운 주말되세요!
감사합니닷! 행렬 덧셈이 브론즈 3으로 갔네요~~ 2단승급!
나머지가 0일때도 조합을 이용해서 풀어야하지 않나요? 왜 나머지가 0일때 c배열에 넣지 않고 바로 answer에 1을 더하는지 이해가 안됩니다!
안녕하세요. 반갑습니다. :) 음 예제를 기준으로 생각해보면 원본 배열 1 2 3 1 2 => 합 배열 1 3 6 7 9 합 열을 M의 값으로 나머지 연산을 해준 변형된 합배열은 1 0 0 1 0이 됩니다. 그럼 여기에서 경우의 수를 구해보겠습니다. 1. 변형된 합배열에서 0 카운트 하기 +3 변형된 합배열에서 0이 뜻하는 것은 원본 배열을 처음부터 0이 나오는 곳까지 더하면 해당 합을 M으로 나누었을 때 0이라는 뜻이기 때문입니다. 예제에서는 배열 index를 0부터 시작한다면 1,2,4번째 0이 1+2, 1+2+3, 1+2+3+1+2의 구간을 나타내주고 카운트가 됩니다. 2. 같은 값이 나오는 곳 조합을 이용하여 풀기 0인 경우(3개) 3개에서 2개를 선택하는 경우의 수 3을 더해줍니다. => 0인경우도 조합으로 구성하여 카운트를 해줍니다. 아마 이부분을 스킵하신거같아요. 1,2번 선택 : 원본 배열에서 index2번에서 시작하여 하나만 선택하게됨 (3) 1,4번 선택 : 원본 배열에서 2 ~ 4 (3+1+2) 2,4번 번택 : 원본 배열에서 3 ~ 4 (1+2) 1인 경우(2개) 2개에서 2개를 선택하는 경우의 수 1을 더해 줍니다. 0,3번 선택 : 원본 배열에서 1~3 (2+3+1) 이렇게 하여서 예제의 출력이 7이 되는것으로 보시면 됩니다. 감사합니다. 좋은하루 되세요!!
@@codingtest 완벽하게 이해했습니다! 빠르고 자세한 답변 정말 감사합니다!!
오 해당 도서의 저자이신건가요? 이북으로 구매해서 갖고있는 책인데
아 네. 구매해주셔서 감사합니다. ^^
1~20까지 더해서 210에 10 빼서 19개가 최대인 걸로 생각해도 편할 것 같아요. 잘 봤습니다.
오 그렇게 생각해도 되겠네요 ^^!!
문제3 구간합 구하기1번문제는 영상없나요? 자바영상밖에 없어서요
@@도토리삼삼 안녕하세요~^^하나의 문제를 모든 언어로 제작하지는 못하였습니다~! 꾸준히 도움이 되는 컨텐츠 업로드하겠습니다. 좋은하루 되세요~
퀄리티 있는 강의 정말 감사합니다 ㅠㅠ
자바가 좋아용 ㅠㅠㅠㅠㅠㅠ 늘 감사합니답
막막했었는데 JAVA 코딩테스트 영상 만들어주셔서 감사합니다.. 이제 코딩테스트 준비하는데 열심히 영상 달려볼게요!! 진짜 감사해요 저의 은인!!
좋은 강의 항상 감사드립니다. 파이썬 책으로 공부중인데, 왜 트리를 구성할 때 ``` treesize = 16 tree = [0] * (treesize +1) ``` 이 구문에서 왜 treesize를 16이 아닌 17로 하는지 알 수 있을까요? index[0]도 존재하고 굳이 17로 하는 이유가 있을까 해서요 감사합니다
안녕하세요. 반갑습니다. 처음에 질문해주셨을 때에는 배열에서 0번째를 사용하지 않아서라고 답변을 드리려고했는데, 조금 더 생각해보니 0번을 사용하지 않아도 굳이 +1을 할 필요가 없다는 것을 알게 되었습니다. 트리의 사이즈를 treeSize = pow(2, treeHeight + 1)로 만든다는 것은 데이터의 개수(리프노드개수)가 8개이면 16개의 크기로 만들게 되는데, 이때 리프노드를 제외한 나머지 노드의 개수는 8개가 아니라 7개라는 것을 간과하였습니다. 그렇다면 총 indxe는 어짜피 15개만 사용하기 때문에 tree = [0] * (treesize +1)를 하지않고 tree = [0] * (treesize)로 하여도 문제가 없겠네요. 마지막 tree[16]은 결국 사용하지 않게 되는것 같습니다. 날카로운 질문 감사드립니다. 굳이 사용하지 않아도 되는 부분이라 다음 개정판에서 반영하도록 하겠습니다. 즐거운 하루 되세여 :)
@@codingtest 친절하고 상세한 답변 감사드립니다 🙇♂️
감사합니다 !
감사합니다 !!
이제 브론즈 2 시작합니다. 브론즈 2부터 슬슬 막히기 시작하네요. 부트캠프에 들어와서 공부중인데 비전공자생들도 저 빼고는 다 잘하는거 같은데 저만 뒤떨어지는거 같아서 불안하네요. 이쪽 분야에 재능이 아예 없는거 같기도 하고. 그래도 끝까지 해보겠습니다 ㅠㅠ.
저도 처음에 비슷한 고민했었습니다~ 실천이 중요하다고 생각하는데 이미 시작하신게 멋있으신거같아요~ 무엇이든 열심히하면 나중에 다 돌아온다고 생각합니다!! 힘내시고 즐거운 주말보내세요~!!
감사합니다!
감사합니다😃 간단한 데 점화식 세우는 게 뭔가 생각이 잘 안되네요!😂😂
시리즈 계속 해주셔서 감사합니다ㅠ
시청해주셔서 감사해요!!
안녕하세요? 강의 정말 감사하게 잘듣고 있습니다. 다름이 아니라 아무리 찾아도 백준 2751번 문제의 강의가 없어서 원래 없는건가요?
안녕하세요. 반갑습니다. 해당 문제는 아쉽게도 따로 강의를 만들지는 않았습니다. 사실 자바 언어라면 Array.sort를 사용하여도 문제는 바로 해결이 되는 것인데 책에서의 설명은 병합정렬로 직접 구현하는 방식으로 구현하였습니다. 이론 부분은 th-cam.com/video/KNKj8QSbRXE/w-d-xo.html 영상을 참고해주시면 좋을 것 같습니다. ^^ 감사합니다. 좋은하루 되세요 :)
@@codingtest 아 그렇군요ㅎㅎ 책에서도 잘설명해주셔서 괜찮긴한데 영상이 이해가 더 빨리되서 볼 수 있을까 했어요ㅎㅎ 강의나 책이나 너무 감사하게 잘보고 있습니다. 감사합니다!
알고리즘 초보자인데 선생님 책과 설명이 너무 이해가 잘 됩니다..! 감사합니다!!
시청해주셔서 제가 감사합니다 :)
안녕하세요. 선생님 강의를 따라하면서 백준 문제를 풀고 있는데요. 저는 int count 를 while문 밖에 선언했는데 오류가 나는 이유를 정확히 잘 모르겠습니다. 혹시 왜 그런지 알 수 있나요? GPT에게 물어보니 while 문 밖에 쓰면 모든 입력값에 대해 누적된 값을 도출한다는 식으로 설명을 하는데 정확히 이해가 안됩니다.
안녕하세요~! 음 오류가 답이 명확하게 안나오시는걸로 이해를 했는데. 해당 문제에서는 while문 한번 마다 한줄에 있는 단어의 개수를 카운트하여 출력하게 되어있습니다. 밖에 선언을 해주시면 한줄에 단어를 읽고 출력 후 다음줄을 읽어 카운트 할때 0부터가 아닌 이전 결과에 누적하여 갯수를 계산하게 되어서이지 않을까 싶습니다. 만약 밖에 선언을 유지한다면 while문 시작지점에 초기화(count=0) 해주시면 될 것 같아요~ 좋은하루되세요!
유클리드 호제법 확장은 영상 없을까요 😢 올려주신 영상들 감사합니다
안녕하세요~ 아쉽게도 해당 영상은 제작하지 않았습니다 ㅠㅠ 좋은하루 되세요~
감사합니다!!
제가 감사드려요^^
강의 잘 들었습니당 🙏🙏 BFS 랑 합쳐지니까 헷갈리네요ㅜㅜ
고양이 문제처럼 새싹 문제도 System.out.println을 이용해서 한줄씩 넣어서 출력하면 안되는건가요?
안녕하세요. 반갑습니다. 해보진 않았지만 ~ 아마 별도 제약사항이 없기 때문에 한줄씩 출력하여도 큰 문제 없을 것이라고 생각됩니다. !! 즐거운 하루 되세여 ~
점화식을 이렇게 만들 수도 있다니 정말 기발하네요. 입력을 받으면서 DP 테이블을 채우는 방법도 멋진거 같습니다.
이번 강의도 매우 잘 들었습니다. 좋은 강의 해주셔서 감사드리고, 많이 배우고 있습니다. 이번 강의는 질문이 하나 있는데요, 수열에서 수 1개를 제거했을 때 최대값을 찾는 마지막 부분에서, 저의 생각은, A[0]가 제거됬을 경우와 A[N-1]이 제거되었을 경우가 고려되지 않은거 같은데요. 아래와 같이 양 끝단의 경우도 고려하는 것이 필요하지 않을까요? //////////////////////////////////// // 수 1개를 제거했을 때 최대값 찾기 //////////////////////////////////// // A[0]를 제거했을 경우 int temp = R[1]; result = max(result, temp); // A[1] ~ A[N-2] 중에 하나를 제거했을 경우 for (int i = 1; i < N - 1; i++) { temp = L[i - 1] + R[i + 1]; result = max(result, temp); } // A[N-1]을 제거했을 경우 temp = L[N - 2]; result = max(result, temp); cout << result << " ";
안녕하세요. 반갑습니다. 양 끝에 있는 수열을 제거 하는 것은 수 1개를 제거 하지 않고 시작은 A[1]부터 한다거나 종료를 A[N-1]까지 하면 가능하기 때문에 굳이 필요하지 않을 것이라고 생각됩니다. ^^ 예를들어 -100 5 -10 10 10 이라면 A[1] ~ A[4]까지의 연속합에서 A[2]를 빼는 것이 가장 유리하고 A[0]은 그냥 시작점을 A[1]부터 시작하면 되기때문에 무시할 수 있기 때문입니다. 좋은하루 되세요 ~
지금 국비지원 교육을 들으면서 프로그래밍 공부를 시작했는데 비전공자이기도 하고 알고리즘 코딩테스트를 어떻게 준비해야할지 막막했는데 우연히 이 채널을 찾았습니다. 감사합니다! 선생님
에이~ 제가 감사드려요~ 좋은하루되세요!!
좋은 강의 너무 감사드립니다. 오늘도 하루 코딩 덕분에 한 문제 풀고 갑니다. Happy 하루 코딩!! 참고로 책의 슈도 코드와 코드 주석에 오타가 있는 거 같습니다. D[1][0] = 0으로 초기화해야 하는데, D[0][1] 은 0으로 초기화라고 되어있습니다.
안녕하세요. 알려주셔서 감사합니다 :) 확인하여 정오표와 다음 쇄에 반영하겠습니다!! 오늘도 좋은 하루 보내세요 ~
현 시점에 코딩 테스트가 의미가 있을까요?
안녕하세요~^^ 음... 저는 어떤 것이든 활용하는것에 따라 가치가 달라질것 같긴한데... 시점보다는 어떻게 활용하느냐에 따라 의미가 달라질것 같습니다!!
D[i]의 정의에 따라서 D[N + 1] = 0으로 고정되고, 이를 초기값으로 i가 N에서 0으로 1씩 작아지면서 D[N]의 관계를 찾는 것이 이 점화식을 만드는 아이디어이지 않을까 싶습니다. 당연히 알 수 있는 초기값이 처음이냐 끝이냐에 따라서 점화식 (관계식) 을 만들어내는 아이디어의 시작 포인트가 되는 거 같습니다.
처음에는 이게 무슨 소리인가 도통 이해하기가 어려웠는데, 하루 지나 다시 살펴보니, 이해가 된 거 같습니다. D[N]의 값이 될 수 있는 경우를 생각하고, 그 중 최소 값을 취하는 것이네요.
안녕하세요. 강의 감사하게 잘 듣고 있습니다. 그런데 다름이 아니라 문제를 풀다가 의문이 생겨서 질문을 드리고 싶어서 글 올립니다. a[i]+a[j] == find 부분에서 제가 처음에는 else if(a[i]+a[j] == find){ if(a[i] != a[j] && i != k && j != k){ count++; break; } else if(i == k){ i++; } else if(j == k){ j--; } } 로 첫 조건문에 '다른 수 두 개의 합'이라는 문제의 설명 때문에 a[i] != a[j]를 추가로 작성하고 진행하였는데 시간 초과가 떴었습니다. 혹시나해서 a[i] != a[j] 라는 조건 때문에 안되는건가 싶어서 지워보니 되더라고요. 이게 왜 이렇게 차이를 보이는 것인지 알고 싶은데 알 수 있을까요?
안녕하세요~^^ 반갑습니다. 음 지금 제가 모바일로 작성하여서 살짝 정확하지 않을수있는데요~ 예를들어 4 2 2 2 2 2 2 2 2 2.... 라는 예제라고 하면 해당조건이 있다면 값이 같은것도 같은수로 보기때문에 4가 좋은수인지 보기위해 끝까지 탐색을 하여야하고 아마도 좋은수로 카운트 되지않을것으로 보입니다~^^ 때문에 시간초과가 날것으로 보여요. 없다면 처음 2 2두개를 찾았을때 바로 좋은수로 판단하고 4에 대한 탐색은 끝날것같습니다!! 좋은하루되세요~
@@codingtest 아! 그렇군요... 전혀 생각 못했네요... 역시 다르시네요 감사합니다...
양질의 강의 감사합니다