본문 바로가기
반응형

프로그래밍언어/알고리즘12

개발자 면접 알고리즘 공부 시작하는 방법, 1-2개월만에 갑자기 잘할수는 없습니다. 면접 문턱을 넘기 위해서 알고리즘 문제를 자주 접하게 되는데 Easy, Medium, Hard 3가지 유형으로 문제를 접하게 됩니다. 문자열, 배열, 정렬, 조합, 재귀, 트리, Map 등등등 다양한 방법들을 만날수 있는데 알고리즘 문제풀이에서 빈도높은 자주사용되는 방법을 정리해보려고합니다. 너무 어렵게 생각하기 보다는 문제를 해결하는 방법으로 접근하시면됩니다. 알고리즘 어렵게만 생각하신다면 어렵지만 자주 문제를 접하다보면 조금씩 조금씩 성장하게됩니다. 급하게 준비하기보다는 틈날때마다 꾸준하게 풀어나가시는것을 추천드립니다. 블라인드에서 기억에 남는 댓글이 있는데 연봉을 1000만원 올리려면 어떻게해야되나요?! 라는 질문에 베스트 댓글로 알고리즘 1문제당 10000원씩 올라간다고 생각하시고 10개 10만원.. 2022. 11. 12.
Leetcode 문제풀이 난이도 Easy Two Sum Java Leetcode https://leetcode.com/problemset/all/ 문제풀이 nums : int[] 타입 배열 target : nums 배열에 속한 2개의 index 합 output : target에 해당하는 2개의 nums배열 index 반환 배열을 2개의 배열로 돌면서 값을 비교해서 동일하면 반환하는 형태로구현 해보도록 하겠습니다. 우선 테스트 코드에 아래처럼 짜보고 package com.codeing.code.leetcode; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.HashMap; import java.util.Map; im.. 2022. 9. 15.
Leetcode 문제풀이 난이도 Midium 94. Binary Tree Inorder Traversal 트리 인오더 Leetcode https://leetcode.com/problemset/all/ 천천히 읽어보셔영 왼쪽 노드에 값이 없으면 Root 삽입 코드는 간단합니다. 이해하고 기록해두고 비슷한 문제가나왔을때 참고할수있는 형태로 기록해두면될것 같습니다. package com.codeing.code.leetcode; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * leetcode : https://leetcode.com/problems/binary-tree-inorder-traversal/ * 난이도 : easy */ public class BinaryTreeInorder { public class TreeN.. 2022. 9. 9.
알고리즘 8편 Hash 난이도3 베스트앨범 lamda 함수형 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 베스트 앨범 Hash 난이도 3 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres [i]는 고유번호가 i인 노래의 장르입니다.. 2021. 10. 4.
알고리즘 7편 Hash 난이도2 key value 위장 의상경우의수 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 오늘은 프로그래머스 Hash 난이도 2 위장 코딩해보도록 하겠습니다. 프로그래머스에서 3번째 문제이며 1번 2번을 풀어보셨다면 3번째도 풀어볼 수 있을만한 난이도입니다. 그럼 지금 시작하도록 하겠습니다. package com.programmers.problem /** * 문제 설명 BJ들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 BJ가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴동그란 안경, 검정 선글라스 상의파란색 티셔츠 하의청바지 겉옷긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때.. 2021. 9. 21.
알고리즘 6편 Hash 로 2개 배열 중복값 찾고 지우기 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 2021년 그것도 9월이네요 벌써 내 나이 40대 초반도 지나가고 있네요 오늘은 연휴 시작 토요일입니다. 다들 즐거운 한가위 추석 되시고 놀지 말고 공부하세요 알고리즘 문제는 다양한 곳에서 찾아서 배울 수 있으니 시간 날 때마다 풀어보시기 바랍니다. Hash hash에 대한 문제를 풀기 전에 우선 우리가 소스에서도 많이 봐왔던 Hash에 대해서 가볍게 알고 넘어가도록 하겠습니다. hash 많이 쓰잖아요? HashMap HashSet HashTable HashArray Hash를 그토록 쓰는데 Hash에 대해서 설명을 해봐!? 어.. Hash 요? Key, Value로 이루어진 데이터 정도라고 설명할 수는 있는데 좀 더 이해할 수 있도록 설명 가능한 방법이 있을까요? 또 제가 좋아.. 2021. 9. 18.
알고리즘 5편 특정 문자열 찾기 및 최소거리 탐색 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 알고리즘 잘해쳐나가고 있나요? 저도 개발을 이렇게 나이먹고 문제해결방법 하고 있을줄은 몰랐습니다. 아에 못할거라고 생각하고 접근을 안했는데 하니까 됩니다. 갑자기 이런짤이 생각이 나네요 이제는 고인이되신 현대그룹 정주영 회장님입니다. 일단 해보시기 바랍니다. 좀더 일찍해볼껄 그랬네여 문자열 과 문자에대한 부분을 단계적으로 접근하면서 느낀건 아무것도 모르면 기초부터 하나씩 풀어나가는게 필요한것 같습니다. 오늘의문제 문자열 a 에 문자 s를 0으로 변경하고 문자s를 기준으로 1씩 증가되는 문자열을 만들어보세요 문자열 a : "abcdeapplea" 문자 s: 'a' abcdeapplea 01221012210 이렇게 나와야 정상적인 출력입니다. 음..... 전 아직인가봅니다 어떻게 해.. 2021. 9. 16.
알고리즘 4편 정규표현식 말고 아스키 코드로 문자 숫자 필터링하기 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 모든 문제풀이는 kotlin 으로 진행하겠습니다. 오늘은 문자를 처리할때 알파뱃 대소문자만 필터링할때 또는 숫자만 처리할때 필요한 문자열처리에 대해서 알아보려고합니다. 빈도수는 자주 사용되는점 인지하세요!! 문자열을 필터링 할때 보통 어떻게 진행 하시나요? 문자열 필터링 저는 주로 regex 정규표현식으로 처리를 한적이 많습니다. 많은 샘플들이 정규표현식을 선호하기도합니다. 인터넷 검색해보면 많은 사람들이 정규표현식을 사랑합니다. 원하는 문자열에 형태를 validation 할수 있습니다. 오늘의 문제 영어 알파뱃과 특수문자로 이루어진 문자열중에서 영어 알파뱃만 뒤집고 특수문자는 자기자리에 있는 문자열로 출력해보세요 예시) A!P!P!L!e e!L!P!P!A val regex = .. 2021. 9. 14.
알고리즘 3편 Char 문자열 뒤집기 한판 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 모든 문제풀이는 kotlin 으로 진행하겠습니다. Java 만 하다 보니 좀 다른 언어로 진행해보고 싶었고 앞으로 kotlin으로 개발을 해보고 싶다는 생각도 들어서 알고리즘부터라도 진행해보도록 하겠습니다. 문자열 관련 문제를 풀다 보면 단계적으로 비슷한 부분들을 학습하게 됩니다. 문자열을 char배열로 변경해야 한다든가 또는 대소문자만 가지고 와야 한다든가 뒤집어야 할 때 말입니다. 여러 가지 방법으로 진행할수 있지만 현재 단계는 1단계라는 점 그리고 가장 가볍게 여러가지 생각을 하지 말고 접근하는 법부터 진행해야 합니다. 우선 내가 현재 알고 있는 지식으로 최대한 문제를 접근해봅니다. 그래야 리펙토링을 하더라도 이해가 될 수 있기 때문입니다. 처음에 시간이 오래 걸린다고 해서.. 2021. 9. 13.
알고리즘 2편 문장(문자열) 과 단어 코틀린(kotlin) 으로 시작하는 문제해결방법 안녕하세요 앵과장입니다. 이거 굳이 -0- 이런 말 안 해도 되는데 일단 제가 하는 게 항상 최선에 방식도 아니고 더 좋은 개발 방법이나 잘하시는 분들이 있을 겁니다. 저도 10년 차 이상 개발자이지만 이런 거 해본 적도 없는 안타까운 직장인이라 공부한다는 접근이니 소스에서 좀 더 좋은 방법이 있다면 댓글로 추가해주시면 저도 공부하면서 많은 도움이 될 것 같습니다. 모든 문제풀이는 kotlin으로 진행하겠습니다. Java 만 하다 보니 좀 다른 언어로 진행해보고 싶었고 앞으로 kotlin으로 개발을 해보고 싶다는 생각도 들어서 알고리즘부터라도 진행해보도록 하겠습니다. 문장(문자열) 과 단어 오늘은 문장 과 단어를 처리하는 문제를 풀어보도록 하겠습니다. 문장 그리고 단어 단어들이 여러 개 있는 형태를 문장.. 2021. 9. 13.
알고리즘 1편 어디부터 시작하면될까요? 점진적인 시작 나쁜머리를 굴려보자 개발자 면접 준비기초 안녕하세요 앵과장입니다. 오늘은 알고리즘 동기부여 그다음 편 시작해보기입니다. 알고리즘 어떻게 시작해야 됩니까? 저처럼 경력은 있는데 알고리즘이 부족해서 시작하는 분들도 있을 것이고 개발자가 되기 위해서 공부하는 사람 취미로 개발이 해보고 싶은 분들까지 있을 겁니다. 알고리즘이 왜 필요한 건가요? 회사생활 정말 알고리즘만 하면 연봉 올라가나요? 아니요!! 일머리가 돌아가야 합니다. 경력 10년 이상 동안 정말 알고리즘을 몰라도 개발자가 되고 경력이 오르고 연봉이 오르나요? 가능합니다. 회사생활은 개발만 잘한다고 되는 건 아닙니다. 일머리가 있어야 회사생활이 가능합니다. 약간에 센스, 커뮤니케이션, 눈치, 아부, 운, 낄낄 빠빠, 주변 사람 들까지 적절하게 버무려지면 사회생활 레벨업이 됩니다. 눈치 없는 .. 2021. 9. 12.
알고리즘 0편 시작 동기부여! 내가 누군지 아니 개발자다! 노예가 아니구! 개발자 면접 준비 기초 안녕하세요 앵과장입니다. 알고리즘을 해야 하나요? 경력자분들 중 저와 비슷한 생각을 하시는 분들도 있을 거라고 생각합니다. 경력이 17년 이상 되다 보니 연봉이 낮은 편은 아닙니다 그렇다고 높다고 생각해야 될까 할 정도로 높은 편도 아닙니다. 이렇게 되다 보니 굳이 알고리즘을 준비해서 면접을 봐야 하나 라는 생각을 어느 순간 가져버리고 사는 순간... 개발회사 생태계를 못 따라가고 있는 나를 발견했습니다. 인스타, 블로그, 유튜브 조회수에 목말라서 허덕이고 관심을 받고 싶는 것을 좋아하는 내가 개발자로서는 생각보다 그렇게 노력을 해본 적이 있나라는 생각이 들었습니다. 사실 시간 대비 효율이라고 개발 알고리즘 풀 시간에 다른 부분들을 끌어올려야겠다는 생각으로 이것저것 하고 있는데 하면서 알게 되었습니다. .. 2021. 9. 11.
728x90