본문 바로가기

IT 정보 공유방

Hash 함수 Hash 함수란? 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다 Hash 함수를 파이썬에선 제공해준다. 가령, Console 창에서 hash("KEY")를 입력한다면 이상한 숫자가 나올 것이다. 주소값이라고 생각하면 된다. 파이썬이 좋은 점은 배열, 링크드리스트, 스택, 큐 등등.. 모두 리스트로 구현한다는 점이다. 거기에 더해서 해시함수를 제공하기 때문에 리스트 길이 만큼을 나눠서 나오는 나머지를 리스트의 키로 잡고 해시함수를 만들면 된다. 다음과 같이 만들면 된다. items[hash("apple")] = "사과" 이를 코드로 짜보면 아래와 같다... 더보기
BFS & DFS 구분하자! BFS & DFS (그래프 알고리즘) BFS & DFS. 삼성 SW 역량테스트에 핵심 주제이다.하지만, 이것만 잘 알고 코드를 구현한다고 테스트 케이스가 다 통과하는가? 답은 "아니다." 이유는 재귀 함수는 쉬운 것이고, 이와 관련된 코드를 구현하는 것, 시뮬레이션 작업이 더 어렵기 때문이다. 그렇다면 왜? 탐색 알고리즘에 집중해 있는지 알아보자. 탐색 알고리즘은 순회를 모두 하는 경우이기에, 연산량이 많고 그에 따라, 컴퓨터 활용이 많아진다.따라서, 기업에서 SW개발 직군을 뽑을 때, 컴퓨터 연산량을 잘 관리하고 효율적으로 코드를 짜는 사람을 뽑으려 하므로 탐색 알고리즘이 코드 구현에 핵심 요소라고 할 수 있다. 기본적으로 탐색은 컴퓨터 연산량을 극대화하는 작업이기에, 사람이 코드를 구현하고 디버깅하면.. 더보기
슬라임문제_삼성DS준비 안녕하세요! 오늘은 삼성전자 S직군 대비 슬라임 문제를 가지고 왔습니다. 2018 하반기 SW 역량테스트 중 SDS 문제와 비슷한 유형인데, 내가 이동하는 위치와 나의 위치값 차이를 비교하여 범위 내에 있을 경우 평균 값으로 대체하면서 재귀 진행을 하는 것입니다.문제는 아래와 같습니다. 비슷한 유형 문제 중에서는 많이 꼬지를 않아서 어려운 문제는 아니었다. 그렇지만 처음 접했다면 분명 당황했을 문제이므로 반드시 정리하자 핵심은 현재 노드에서 상하좌우 노드 값을 먼저 체크하고 (노드 == 슬라임) 차이를 비교해서 범위 안에 들어가는지 먼저 체크합니다.범위에 들어간다면, 해당 노드의 값을 합칩니다. (기존에 시작 노드는 값에 넣어놓은 다음에 시작할 예정)이렇게 상하좌우 모든 값을 비교해서 차이가 범위 내의 .. 더보기
Spiral Algorithm 달팽이 알고리즘이라고 부르는 이 나열형 배열 알고리즘은 푸는 방법은 다양합니다.탐색으로 풀 수도 있고 반복문을 넣어서 푸는 방법이 있습니다.저는 반복문을 통해서 답을 구해보겠습니다.반복문을 써서 푸는 이유는 알고리즘을 구현할 때 for문에 i를 배열의 인덱스로 가져가는 경향이 많아 문제 해소가 안되는 경우가 많습니다. 이러한 사고를 바꾸고 싶어서 다음과 같이 구현하였습니다.반복문은 말그대로 반복하는 횟수입니다.단순히 그렇게만 이해하면 될 것 같습니다. import java.util.Scanner; public class Spiral { private static Scanner scanner;private static int N;private static int board[][]; public static.. 더보기
SW_EXPERT 1861 정사각형 방 정사각형 방 문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LtJYKDzsDFAXc&categoryId=AV5LtJYKDzsDFAXc&categoryType=CODE 문제 무단 배포를 막기 위해서 링크로 포스팅 하였습니다. 이번 문제는 전형적인 탐색입니다. 동서남북으로 이동할 수 있으며, 본인보다 값 1이 더 큰 방만 이동할 수 있다.이동할 경우 가장 방을 많이 방문하는 횟수와 그 출발 방을 구하시오.단! 횟수가 같을 경우 방 번호가 더 작은 값으로 출력해야 합니다. [전체 코드] import java.io.BufferedReader;import java.io.FileInputStream;import.. 더보기
SW_EXPERT_3234_준환이의 양팔저울 문제 링크는 아래 있습니다. 무단 복제가 허용되지 않기 때문에 링크로 걸어둔 점 양해바랍니다. https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWAe7XSKfUUDFAUw&categoryId=AWAe7XSKfUUDFAUw&categoryType=CODE 이 문제는 순열로 풀어도 되고 탐색으로도 되는데, 저는 탐색으로 풀었습니다.탐색할 때 중요한 것은 첫 번째 숫자를 집어 넣을 당시에 left에 먼저 넣어두고 다시 방문하지 않도록 체크하는 것입니다.가령, 예제에서 1 2 4 를 다루고 있으니 가져와서 설명하자면, LEFT 1 2 4 RIGHT 이런 식으로 LEFT에 먼저 값을 넣어주고 생각해야지, RIGHT에 먼저 .. 더보기
삼성전자_2018 4분기 어닝쇼크 어떻게 해결할 것인가? 삼성전자는 8일 "지난해 4분기 잠정 실적이 매출은 59조원, 영업이익은 10조8000억원을 기록했다"고 밝혔다. 이는 지난해 3분기보다 매출(65조4600억원)은 9.87%, 영업이익(17조5700억원)은 38.5%가 적은 것이다 [출처: 중앙일보] 삼성전자 '어닝쇼크'…4분기 영업익 38% 줄어 DRAM이나 NAND Flash의 가격하락으로 인해 반도체사업에서 수익이 줄었고 모바일사업에서도 예상한 것보다 부진하면서 '어닝쇼크'는 발생한 것이다.비메모리사업이 주력인 인텔에서는 가격하락의 영향을 크게 받지 않아서 17년에 왕좌를 내주었던 부분을 다시 쟁탈할 가능성이 높아보입니다. 메모리사업과 반도체 부분에서 다시 가격이 상승할 것이라는 전망과 더불어 19년 갤럭시 10주년 기념작인 S10과 폴더블폰, 5.. 더보기
NN단 알고리즘 문제 핵심 아이디어는 이거다... 정말 충격이였다. 아니.. 정말 소름돋았다.N이 예제 입력처럼 3이라고 한다면 나올 수 있는 값은 아래와 같다. ----------1*1 = 11*2 = 21*3 = 3----------2*1 = 22*2 = 42*3 = 6----------3*1 = 33*2 = 63*3 = 9---------- 1 2 3 1 1 2 3 2 2 4 6 3 3 6 9 여기서 최소값은 1이고 최대값은 9입니다. 이걸 가지고 이진탐색을 하는 것입니다. 1부터 9사이의 값들 1,2,3,4,5,6,7,8,9 중 mid값을 구합니다. 중앙값을 구한 다음에 중앙값을 넘어가는 값은 (N*N단의 결과값 중) N으로 치부한다. 따라서 1~9사이의 mid값은 5이며, N(3)을 넘지 않는 것은 그 값 그대로 가.. 더보기

반응형