2년전 댓글이지만 게임 프로그래머가 아니다보니까 해시 테이블 자체 구현하는데 키 데이터에 해싱을 직접 구현해서 하는걸 물은건줄 알고 깝놀 했네요. 중복 키 회피 기법이랑 이런 것들이 들어가서 논리로직도가 아주 복잡하지요. 빠른 엑세스를 위한 기본 로직도 들어가야 하는거고요.
페이지 번호를 모듈러 연산을 통해 나온 나머지에 매핑시킨다면..... 배열의 이름은 배열의 시작점과 같으니까 그로부터 얼마가 떨어져 있는지를 변위값으로만 찾아주면 그것이 value가 되는 것이니까 유사하다고 생각을 했습니다. 그냥 보따리 배열 하나에 그냥 몰아넣는 것 = 램 용량이 엄청나게 크게 만들어지는 것 이게 비효율적이니까 이 같은 불편함을 해소하기 위해 나온개념이 아닌가 생각이 듭니다.
배움의 깊이가 없어지는거 같은 느낌은 아마 프로그래밍 언어가 점점 편하고 쉬워져서 그런 거 같습니다. 해쉬테이블 직접 구현 안해도, 내부를 몰라도 뭔가 만들어서 동작시킬 수 있으니까요. 옛날 386, 486 시절엔 도스화면에 글씨만 가득해도 그거 재미있어서 코딩했고 , 스택 큐 다 구현해가면서 어떻게 조금이라도 빠르게 할까 고민하고 어떻게든 메모리 아껴보려고 엄청 애를 썼는데 ... 요즘은 다양한 자료형 다 제공하고 메모리관리도 알아서 다 해주고.. 완전 편해진거 같어요.
편한 시대에 코딩공부를 시작한 새내기입니다... 말씀해주신 부분이 십분 공감되기에 지금의 편해진 시스템에 안도감을 느끼는 반면, 컴퓨터에 대한 원초적인 이해가 없어도 될까...하는 불안감도 있는 것이 사실입니다. 요즘같이 코딩이 편해진 시대에 시간을 투자해서 컴퓨터의 원론적인 부분을 공부한다는 것이 머리로는 그 중요성을 느끼지만, 취업 등의 현실적인 압박 앞에서는 "편한게 편한거지"라는 식으로 미루게되는 것이 현실입니다... 부디 조언좀 부탁드립니다ㅠㅠ
이걸 보니, 클래스는 C에서 만들 수 있느냐 없느냐를 가지고 싸우던 글이 생각나게 되네요. 클래스는 결국엔 데이터를 한 곳에 모으는 것이고. 함수도 결국엔 '주소'라는 숫자에 이동해서 구조체에 함수 포인터를 이용해서 구현하면 메소드인걸. C언어는 OOP의 언어가 아니다. 라면서 싸우는걸 보고 답답했던 기억이 있습니다. 실제로 학교 선후배와 유사한 대화를 한 적이 있고. '컴퓨터는 숫자로 이뤄져있다.' 라는걸 무슨 뜻인지 생각 안하는 사람도 있는 것 같습니다. 이건 학교 문제이기도 한 것 같지만, 배우는 사람도 깨달아야될 부분을 이루지 못하는 분들이 있는 것 같습니다.
JunkMan 객체지향을 흉내내는 것과 객체”지향”은 차이가 있다고 생각합니다. OOP의 orient가지고 쓸데없는 트집잡는 것 같아서 죄송하지만, (말씀하신 대부분의 말씀에 깊이 동의합니다.) 예를 들어 자바7 이전을 두고 두고 절차지향이나 함수형이라고 하지 않듯이, 언어가 어찌어찌 구현하는 것과 언어가 가진 철학과는 분명한 차이가 있다고 생각합니다,
memoization은 위키를 보고 쓴거죠? 처음 들어본 용어군요.. 이렇게 이야기를 진행하면 끝이 없어요. 말할 때마다 새로운 용어가 나오니까요. 영상에서 나온 최적화의 방법으로 lookup table로도 가능하다. 라는게 제 생각이구요. modulo 연산이 들어가면 무조건 hash table 이다. index 가 들어가는 것도 hash function으로 구현할 수 있으니까 hash table이다 라고 한다면 할 말 없어요. 어차피 lookup table이든 hash table이든 최적화를 위해 고민을 해보았느냐가 핵심이니까요. 상수 속도를 위한 처리 방법을 고민해보았냐가 핵심입니다.
hash table은 lookup table의 lookup 부분을 hash funtion으로 구현한거라고 넓은 의미로 볼수 있겠네요. memoization은 최적화 알고리즘에서 귀납적 연산의 반복성을 기록으로 줄이는 방법이에요. 다이나믹 프로그래밍에서 많이 쑤이는 방법이죠
기본기 복습을 다짐하게 되네요. 좋은 영상 감사합니다.
감사합니다. Hashtable, HashMap 공부하고 있었는데 많은 도움이 되었습니다.
한국 대학 교육과정은 어떻게 가르치는지는 잘모르겠지만 설명하신개념이 딱 제가 미국 대학에서 배웠던 방식이랑 일치해서 reminding 되서 너무 좋았어요!
뒷부분 말은 잘 모르는것도있지만 기본에 충실해야하고 모르는걸 줄여나가야 한다는 두가지를 다시 생각해 보는것만으로도 도움이 많이됩니다ㅎㅎ
감사합니다 많이 배워갑니다👍
전에 들었을떄는 어렴풋하게 이해했는데, 이제 어느정도 경험이 쌓이고 공부하니 확이해가 되네요. 감사합니다.
다행입니다. 🤗
일에 지치고 힘들때 포프님 강의 듣고 힘냅니다!
포프쌤 c 언매니지드 프로그래밍 강의 듣다가 해시 테이블부분 듣고
잠깐 딴짓하면서 이 영상 보는데 넘나 뜨끔하네요 ㅋㅋㅋ 복습하러 가겠습니다....
너무 좋은 강의 감사합니다 ㅠ.ㅠ..
1년 전까지는 프로그래밍 이야기 하시면 못알아들어서 대충 듣고 흘렸는데 요즘은 반절이상은 알아듣고있습니다 ㅎㅎ 프로그래밍 관련 이야기 많이 해주셨으면 좋겠습니다.
와, DS 와 Algo,를 배우기만했는데, 정말 이해 잘하고 갑니다. 감사합니다.
안녕하세요. 좋은 말씀 정말 감사합니다. 강의 진행하시는 거 꼭 들어보고 싶네요.
어서 와서 들으세요 pocu.academy 입니다
포프 큐션의 위치와 포프님의 헤어스타일 의상을 비교해보면 언제 어떤영상과 같이 찍은 영상인지를 추측해 볼수 있지요~ 후훗
이글을 보고 뭐뭐가 같이 찍은 영상인지 찾아보시는 분들덕에 다른 영상 조회수가 올라가겠지?ㅋㅋ
pocu... 넘 기대됩니닷ㅎㅎ
학원에서 해쉬테이블 해쉬맵 이런거 알려주지 않고 바로 해쉬코드 메서드를 가르쳐주시길래 도무지 이해가 안되서 여기까지 왔네요ㅠㅠ 이제 대충 어떤건지는 알겠습니다. 더 공부해야겠지만요. 설명 감사해요!!
몇년 간 올리셨던 영상 내용에서 comp 과목들의 정수(精髓)가 느껴집니다ㅎㅎ
흔들리지 않는 원칙이 중요하죠
영상 잘 봤습니다. ^^ 좋은 강좌 감사합니다. 아쉬운건 Object 와 Class 를 구분하여 표현하지 않아 헷갈려요 ... 예를 들면 getHash() 는 Class에서 작성하는게 맞는 표현 인거죠?
과거에 비전공자로 자료구조 수업을 들었었는데, 그 수업 대부분 이해를 못 했던걸로 기억해요. 그냥 빠르구나 정도로 기억들 하더라고요.
와 진짜 설명 명료하네요. 소름돋습니다. 바코드예 잘쓸께요. 곧 면접이라서 ㅎㅎ
영상 정말로 잘봤습니다. 수다보다 저는 프로그래밍적인게 좋네요 ㅎ
감사합니다.
테이블이랑 해시테이블 구현도 직접 해봐야겠어요..
마침 C로 Hash 배우는 중이에요, 지금보니 파이썬에서 비슷한 함수가 있었던거 같아요
학교교육이 기본기를 책으로만 가르치고 실제로 다져주지 않는다는거에 완전 공감이요. ㅠ.ㅠ
네. 결국 혼자서 해야해요.
고수의 생각을 들을수있다는거 자체가 감사하다
오바좀 ㄷ;
2년전 댓글이지만 게임 프로그래머가 아니다보니까 해시 테이블 자체 구현하는데 키 데이터에 해싱을 직접 구현해서 하는걸 물은건줄 알고 깝놀 했네요. 중복 키 회피 기법이랑 이런 것들이 들어가서 논리로직도가 아주 복잡하지요. 빠른 엑세스를 위한 기본 로직도 들어가야 하는거고요.
ㄹㅇ... 유투브의 순기능
(수학 문제 중 잘 틀리는 유형 모음집같은)
해시는 잘써야하죠
해시에 해시를 담는 부분은 정말 조심해야된다고 생각합니다.
여러 언어들이 점점 전문 프로그래머 뿐만 아니라 코딩경험이 없는 사람들을 타겟으로 하다보니 어려운부분을 최대한 숨기게되고, 대학교에선 잘하던 못하던 학생들 취업이나 시켜보자 해서 해당 언어를 쓰면 굳이 알필요 없는 부분은 가르치지 않는느낌이에요
👏
최근 자바 스프링 개발에서 다시 C# 스크립트 코딩으로 바꿨는데 부족한게 많네요...
hash function collision 처리 하는것만으로도. 기본기 파악 가능하죠. 그런데 시니어일수록 모릅니다. ㅠ
건 시니어가 아니라 그냥 경력이 긴 사람이라 생각합니다... (저랑 일하는 시니어는 그거 다 할 줄 앎...)
프로그래머가 목표인 코더입니다. '이럴 땐 이걸 써야한다'라는 식의 취업용 교육을 받고 취업 후 결론부터 '왜?'라는 식의 역으로 공부 중인데요.
손 안 닿는 등짝 한가운데를 시원하게 긁어준 느낌이네요. 뭘 검색해야할지 도움 받았습니다. 감사드립니다.
님이 이 댓글 남길 즈음 저는 컴공 막 입학할 시기였는데 어느덧 졸업이 한학기 남은 코앞이네요. 여러 언어를 다뤘고 포트폴리오를 준비중입니다. 님은 어떻게 지내시는지 이 댓글보고 안부 남깁니다
질문이 있습니다..!!!! 가상 메모리에서 페이지 번호와 변위값 이 두가지를 통해 물리적 주소를 알아내는 방식과 동일하다고 봐도 무방한가요?
페이지 번호를 모듈러 연산을 통해 나온 나머지에 매핑시킨다면..... 배열의 이름은 배열의 시작점과 같으니까 그로부터 얼마가 떨어져 있는지를 변위값으로만 찾아주면 그것이 value가 되는 것이니까 유사하다고 생각을 했습니다.
그냥 보따리 배열 하나에 그냥 몰아넣는 것 = 램 용량이 엄청나게 크게 만들어지는 것 이게 비효율적이니까 이 같은 불편함을 해소하기 위해 나온개념이 아닌가 생각이 듭니다.
건 운영체제에 따라 다르겠죠....(저도 깊게 안봐서 잘 모름)
0:16 전 진담을 좋아한다고요!!
예전 생각나네요. 확실히 해본 친구와 다르져
Hash table 어릴때는 곧잘 만들었는데... 지금 하라면 못하겠군요...
일본 아이티 회사 코딩시험에 해쉬테이블 만드는 문제가 나왔네요. 얼마나 중요한 부분인지 포프님 동영상 보면서 다시 한번 느낍니다.
빙의라고 하시는 줄 ㅠㅠ 무식해서 죄송합니다.
공부 좀 더 하고 오겠습니다.
선생님의 가르침 응애가 쫓아올라갑니다🥺❤️
어서오세요 🤗
어지간한 프로그래밍책 하나 읽는거보다 스스로 생각하게하는 비디오내요.
ㅋㅋㅋㅋㅋㅋㅋ 돌고 돕니다 진짜
4k 라니... 아저씨...
POCU가 필요한 이유
모닝 퐆!
이런 기본기 질문이 인터뷰에서 까다로운게 너무 당연해서 오히려 그 당연한 답이 잘 안나오더라구요. 물론 이것도 준비부족, 변명거리는 못되지만요. 마치 숨 어떻게 쉬어요? 같은 느낌....어? 어디서부터 답해야되지. 허파부터 만들어야되나;
송종성 앜ㅋㅋㅋㅋㅋㅋ 매우 공감.. 흙이란 뭐죠? 불의 원리는 무엇인가요? 안그래도 떨리는 면접때 이런 기본적인 질문 들으면 더 당황하게 되는거같아요.. 코딩할때는 다 하는 것들인데
PS를 좋아하는 개발자로서 코드포스 컨테스트에서 해싱 했다가 핵 당한 적 있어서 찜찜한 방법 중 하나 ㅋㅋ
재미 있네요. C 프로그래머 다워요. 성능 향상을 목적으로 하지는 안지만 비슷한 개념으로 업무 프로그램 개발은 코드 규칙을 만들고 테이블에 저장 하죠. 제가 초급때 포프님 비슷한 말 했다가 욕먹었죠. 성능이요? 램 더 사서 다는게 더 편하다네요 ㅋㅋㅋ
06:04 눈물 한방울 흘립니다 ㅠ
그저 빛.... ㅍㅍ
반짝
포프님이 프로그래밍 관련 얘기할때마다 뷰수가 떨어지는 이유는 아마도 프로그래밍 얘기는 프로그래밍을 어느정도 배운사람만 알아들을수 있기에 그런 지식을 아는 한정된 사람들만 봐서 그런 것 같습니다. 포프님의 시청자는 프로그래밍 관련된 사람만으로 이루어진게 아니니까요
POCU에서는 이런 내용들을 제대로 배울수 있는건가요?
뭔가 대부분의 사람들이 말하는 "기초" 라는걸 좀 배워보고 싶어서 여기저기 물어보면 다들 그냥 '문제푸는능력' 정도로 추상적으로 답변을 해서 어떻게 공부해야 하는지 궁금하네요.
안녕하세요. 좋은 아침입니다.
테크,프로그래밍 비디오보다 다른 쪽 조회수가 높네요. ㅎㅎ
정말 요새 학교는 이런거 안알려줘요.. 그래서 무엇을 공부해야하는지 알 수 없게 됩니다.
헛소리할때 매력 터짐
성능을 올리려면 캐시 해시~
아...너무 어렵다^^ 1년 반차가 알기엔 너무 힘든가요?
그냥재능차이에요 ^^ 머리가 되면 이해하고 우메하면 몇년을 해도 이해를 못하는게 현실입니다.
배움의 깊이가 없어지는거 같은 느낌은 아마 프로그래밍 언어가 점점 편하고 쉬워져서 그런 거 같습니다. 해쉬테이블 직접 구현 안해도, 내부를 몰라도 뭔가 만들어서 동작시킬 수 있으니까요.
옛날 386, 486 시절엔 도스화면에 글씨만 가득해도 그거 재미있어서 코딩했고 ,
스택 큐 다 구현해가면서 어떻게 조금이라도 빠르게 할까 고민하고 어떻게든 메모리 아껴보려고 엄청 애를 썼는데 ... 요즘은 다양한 자료형 다 제공하고 메모리관리도 알아서 다 해주고.. 완전 편해진거 같어요.
편한 시대에 코딩공부를 시작한 새내기입니다... 말씀해주신 부분이 십분 공감되기에 지금의 편해진 시스템에 안도감을 느끼는 반면, 컴퓨터에 대한 원초적인 이해가 없어도 될까...하는 불안감도 있는 것이 사실입니다. 요즘같이 코딩이 편해진 시대에 시간을 투자해서 컴퓨터의 원론적인 부분을 공부한다는 것이 머리로는 그 중요성을 느끼지만, 취업 등의 현실적인 압박 앞에서는 "편한게 편한거지"라는 식으로 미루게되는 것이 현실입니다... 부디 조언좀 부탁드립니다ㅠㅠ
binning을 하고싶다.
6:30설명
첨으로 댓글 달아봅니다 ( 뱃지 자랑 )
해쉬 테이블 구현 문제가 나왔으면 저는 합격 했을텐데 아쉽네요, 좋은 회사들은 저한테 면접 기회 조차 주지 않으니 ㅎㅎ 혼자 먹고 살 준비 중입니다.
헛소리가 조아요! 데헷☆
형님 5년전부터 같은 헤어스타일이셨군여
가... 가발?
@@포프티비 ㅋㅋㅋ 가발이면 어떻습니까! 항상 재밌는 컨텐츠 기대하겠습니다 ㅎㅎ
대학 2학년때 배우는 내용인데요...자료구조 기초인데... 음 .. 그리고 이 내용은 말로 이야기 하는거보다 코드몇줄로 보여주는게 열매는 전달이 잘될거같네요..
안배우는 대학도 있긴 합니다..... ㅡ.ㅡ
음성 싱크가 안맞는듯 합니다~!
다음편부턴 고치려고 하고 있습니다. :)
포큐를 만든 이유.
이걸 보니, 클래스는 C에서 만들 수 있느냐 없느냐를 가지고 싸우던 글이 생각나게 되네요.
클래스는 결국엔 데이터를 한 곳에 모으는 것이고.
함수도 결국엔 '주소'라는 숫자에 이동해서 구조체에 함수 포인터를 이용해서 구현하면 메소드인걸.
C언어는 OOP의 언어가 아니다. 라면서 싸우는걸 보고 답답했던 기억이 있습니다.
실제로 학교 선후배와 유사한 대화를 한 적이 있고.
'컴퓨터는 숫자로 이뤄져있다.' 라는걸 무슨 뜻인지 생각 안하는 사람도 있는 것 같습니다.
이건 학교 문제이기도 한 것 같지만, 배우는 사람도 깨달아야될 부분을 이루지 못하는 분들이 있는 것 같습니다.
?
리눅스 커널에서 드라이버 어떻게 짜는지 보면 알수있죠 c언어로 OOP를 어떻게 흉내내는지 ㅎㅎ. 진짜 OOP보단 불편하고 제약도 있지만 C개발자들은 아주 오래전부터 흔히 써왔던 패턴입니다.
c든 c++든 컴퓨터의 프로세스는 같은데 , c 에서 oop를 구현해서 사용하는사람이 상대적으로 적고
차라리 발달된 객체지향언어를 쓰는 사람이 많아 c에서 보기 힘든것뿐인데
컴퓨터의 프로세스를 모르는 사람이 구현하는 생각을 못하고 다른소리를 하니 답답해하셧다는거죠?
JunkMan 객체지향을 흉내내는 것과 객체”지향”은 차이가 있다고 생각합니다.
OOP의 orient가지고 쓸데없는 트집잡는 것 같아서 죄송하지만,
(말씀하신 대부분의 말씀에 깊이 동의합니다.)
예를 들어 자바7 이전을 두고 두고 절차지향이나 함수형이라고 하지 않듯이,
언어가 어찌어찌 구현하는 것과 언어가 가진 철학과는 분명한 차이가 있다고 생각합니다,
면접문제로 물어보네요..
면접에서 들으셨나요
@@포프티비 네
lookup table == hash table 비슷한 용어가 많아서 헷갈리네요. 왠지 해쉬라는 용어가 나오니까 어려워 보이는게 아닐까요..
memoization은 위키를 보고 쓴거죠?
처음 들어본 용어군요.. 이렇게 이야기를 진행하면 끝이 없어요. 말할 때마다 새로운 용어가 나오니까요.
영상에서 나온 최적화의 방법으로 lookup table로도 가능하다. 라는게 제 생각이구요.
modulo 연산이 들어가면 무조건 hash table 이다. index 가 들어가는 것도 hash function으로 구현할 수 있으니까
hash table이다 라고 한다면 할 말 없어요. 어차피 lookup table이든 hash table이든 최적화를 위해 고민을
해보았느냐가 핵심이니까요. 상수 속도를 위한 처리 방법을 고민해보았냐가 핵심입니다.
hash table은 lookup table의 lookup 부분을 hash funtion으로 구현한거라고 넓은 의미로 볼수 있겠네요. memoization은 최적화 알고리즘에서 귀납적 연산의 반복성을 기록으로 줄이는 방법이에요. 다이나믹 프로그래밍에서 많이 쑤이는 방법이죠
😀
설마 hash table,hash function도 모르는 사람한테 컴공졸업장주는 학교는 없겠죠....
있다는게 문제.. ㅜ.ㅡ
알려준다 한들 구현 로직이나 하다못해 작동 원리마저 안 알려줘서 문제죠.
그냥 키로 벨류 검색할때 쓰는거다 라고만 알려주니...
반성하겠습니당...
와 받을라다가 안되서 포기함 ㅋㅋㅋㅋㅋㅋ ㅆㅂ거
어처피 모든게 수라면 왜 형태마다 연산속도가 다르죠
비정형데이터에서 정형데이터(=수)를 만드는데 걸리는 시간이 달라서겠죠. (해시충돌이 많아도 느려지나 그런일은 그리 많지 않아서....)
@@포프티비 답변 감사합니다!
ㅎㅎㅎㅎ 내가 올린 조회수 도로 가져가고 싶다.
이렇게 댓글을 달면 힌번더 조회하시고...
1회청 이해 전혀 안됨 ! 공부하고 다시 들어보겠습니다!