코딩 테스트(19)
-
브루트 포스 완전 탐색 알고리즘: 3분만에 이해하기
자세한 내용은 영상으로 확인하세요! :)100억 원이 든 금고를 열 수 있는 4자리 비밀번호가 주어진다면 어떻게 하시겠습니까? 윤리적인 문제도 없고 시간제한도 없다면, 아마도 0000부터 9999까지 모든 숫자를 하나씩 대입해 보는 방법을 선택할지도 모릅니다. 이 단순하고 무식한 방법이 바로 우리가 알고 있는 브루트 포스 알고리즘, 또는 완전 탐색 알고리즘입니다.브루트 포스(Brute Force)는 영어로 '단순히' 또는 '순전히'라는 의미의 '브루트'와 '힘'을 뜻하는 '포스'가 결합된 단어입니다. 즉, 순전히 힘만으로 문제를 해결한다는 의미입니다. 이 알고리즘은 모든 가능한 조합을 하나씩 시도해 보는 방법으로, 주로 비밀번호를 해킹할 때 사용되곤 합니다.브루트 포스 알고리즘 구현 방법브루트 포스 알고..
2024.06.25 -
그리디 탐욕 알고리즘: 이해하기 쉽게 풀어보는 기초 개념
자세한 내용은 영상으로 확인하세요! :) 오늘은 알고리즘 중 하나인 그리디 알고리즘에 대해 알아보는 시간을 가져보겠습니다. 그리디 알고리즘이란 무엇인지, 어떻게 하면 잘 풀 수 있는지, 그리고 초급 문제들까지 정리해 보겠습니다. 그리디 알고리즘의 정의그리디 알고리즘은 이름 그대로 '탐욕'을 의미합니다. 이 알고리즘은 미래를 고려하지 않고 현재 시점에서 가장 좋은 선택을 하는 방식입니다. 즉, 현재 내가 내린 선택이 나중에 어떤 결과를 가져올지는 고려하지 않고, 무조건 지금 가장 저렴한 선택, 가장 빠른 선택 혹은 가장 가치 있는 선택을 내리는 것입니다. 그래서 그리디라는 이름이 붙여졌습니다. 예를 들어, 동전 교환 문제를 생각해 봅시다. n개의 동전과 전체 금액 k가 주어졌을 때, k를 만들기 위해 필요..
2024.06.24 -
부트캠프 vs 국비지원교육 vs 독학: 취업을 위한 최적의 선택은?
자세한 내용은 영상으로 확인하세요! :) 최근 들어 부트캠프와 국비지원 교육 프로그램이 많이 생기면서, 어떤 교육 방식이 더 나은지에 대한 질문을 많이 받았습니다. 독학이 어려운지에 대한 질문도 자주 받았는데요, 이번 글에서는 이 주제에 대해 간략하게 설명드리고자 합니다. 공부를 위한 공부는 이제 그만저도 입사 전까지 나름 열심히 공부하고 성적 관리도 했고, 틈틈이 외국어나 자격증도 많이 땄습니다. 그러나 회사 생활을 하면서 가장 크게 달라진 점은 신뢰가 없는 공부는 절대 하지 않는다는 것입니다. 내가 이걸 배워서 어디다 쓸지 명확하지 않은 것들은 과감하게 버려야 한다는 걸 느꼈습니다. 예를 들어, 저는 최근에 아마존 웹 서비스의 클라우드 실무 자격증을 땄습니다. 하지만 현업에서 클라우드를 활용할 일이 ..
2024.06.24 -
해시(Hash) 알고리즘 쉽게 이해하기
자세한 내용은 영상으로 확인하세요! :) 프로그래밍을 배우다 보면 많은 분들이 해시(Hash) 알고리즘에 대해 질문하고 헷갈려합니다. 그만큼 자주 나오는 개념이지만 쉽게 이해하기 어려운 부분도 있습니다. 오늘은 코딩 테스트를 준비하는 분들이 꼭 알아야 할 해시 개념에 대해 정리해 보겠습니다. 해시(Hash)란 무엇인가?해시는 키(Key)와 값(Value) 형태를 갖는 하나의 자료 구조입니다. 예를 들어, 전화번호부를 생각해봅시다. 우리가 친구의 전화번호를 찾기 위해 이름을 입력하면 해당 친구의 전화번호가 나옵니다. 여기서 이름이 키(Key)이고, 전화번호가 값(Value)입니다. 해시가 등장하기 전에는 배열(Array)이라는 자료 구조만 사용했습니다. 배열은 오직 정수로만 접근할 수 있기 때문에, 문자열..
2024.06.20 -
[프로그래머스] 소수 찾기 (완전탐색 Lv. 2) - C++
0. 자세한 설명은 영상으로 1. 문제 설명 (출처 : 프로그래머스, 원 출처) 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한조건 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를..
2021.11.02 -
[프로그래머스] 전화번호 목록 문제 풀이(해시 Lv. 2) - C++
0. 동일 유형 문제 [프로그래머스] 완주하지 못한 선수 (해시 Lv. 1) [프로그래머스] 전화번호 목록 (해시 Lv. 2) [프로그래머스] 위장 (해시 Lv. 2) [프로그래머스] 베스트 앨범 (해시 Lv. 3) Youtube 영상으로 설명을 보고 싶으시다면 다음 영상을 참고하세요. 1. 문제 설명 (출처 : 프로그래머스, 원 출처) 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어..
2021.11.01