알고리즘 20

세무민의 알고가자 : [HackerRank] 2D Array - DS 문제 풀기

기존에 세무민의 코딩일기에 알고리즘을 작성했는데 오늘 블로그 스킨부터 조금 변경하다보니 따로 분리시켰고 그래서 명칭을 조금 변경해봤다. 세무민의 코딩일기(알고리즘) -> 세무민의 알고가자 이유는 추후에 쉽게 관리하고 싶은 마음에 ㅎㅎ 알고가자 -> 알고리즘 가자!라는 간단한 의미로 시작했다 ㅎ 무튼 오늘 풀어볼 문제는 2D Array! 문제 문제 예시 입력 조건 및 출력 조건 Sample 입출력 문제 요약 및 설명 우선 영어 문제라는 점에서 해석이 중요하다. hourglass : 모래시계 위의 단어가 포인트인데 결론적으로 2D 배열을 모래시개값을 합했을 때 가장 큰 결과를 가진 모래시계 값을 출력하면 됩니다. 그림으로 표현해봤는데 모래시계 모양으로 i칸씩 증가하면 옆으로 옮기면서 계산할 수 있도록 구현해..

세무민의 코딩일기 : 프로그래머스 2016년 문제 풀기

이번 문제는 dateTime만 알고 있다면 10분도 안걸리는 문제 중 하나를 가져왔습니다. 바로 2016년 문제! 이 글을 포스팅 하는 이유는 나중에 DateTime을 또 사용할 수 있을꺼 같아서... 문제 설명 및 입출력 예시 풀이 2016년도에서 월과 일이 주어진다면 해당 요일을 출력하면 됩니다. 그렇다면 하나씩 년별로 계산해도 되지만... 이 방법은 정말 미친짓이기 때문에 사실상 제일 간편한 방법은 dataTime을 이용하는 것! 코드 def solution(a, b): import datetime dayList = ['MON','TUE','WED','THU','FRI','SAT','SUN'] answer = dayList[datetime.date(2016, a, b).weekday()] retur..

세무민의 코딩일기 : 프로그래머스 신규 아이디 추천 문제 풀기

이 문제를 포스팅 하는 이유는....... 진짜 간단한 문제를 1시간 30분동안 풀었다는 점에서... 사실 풀고 난 후 테스트 케이스에 통과 못한 것들이 존재해서....하 ㅠㅠ 이번에 풀 문제는 신규 아이디 추천! 20201년 카카오 신규 블라인드 모집 문제 중 하나입니다. 문제 설명 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다...

세무민의 코딩일기 : 프로그래머스 스킬트리 문제 풀기

확실한 건 그리디랑 동적 다이나믹 프로그래밍 공부를 안하다보니 멘탈은 괜찮아지구 쉬운 문제들만 풀어서 그런가... 오늘 4문제나 풀었다 ㅋㅋㅋㅋㅋㅋㅋㅋ 그 중 한문제를 소개해보면! 바로 스킬트리 문제! 이 문제는 Summer/Winter Coding에 속한 문제이다. 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 ..

세무민의 코딩일기 : 프로그래머스 모의고사 문제 풀기

이번에 포스팅할 문제는 모의고사 문제! 위의 조건이 주어졌을 때 조건에 정답이 가장 많이 일치하는 사람을 선택해주면 됩니다 위에서 1번 수포자의 반복되는 방식이 1 -> 2 -> 3 -> 4 -> 5 -> 1 ->.............. 하나씩 증가하는 방식입니다. 2번 수포자의 반복되는 방식은 2 -> 1 -> 2 -> 3 - > 2 -> 4 -> 2 - > 5 -> 2 -> .............. 2를 빼고 보면 1 -> 3 -> 4 -> 5 일반 순서에서 2를 빼고 앞뒤로 하나씩 넣어준 방식 3번 수포자의 방식은 3 -> 3- > 1 -> 1 -> 2 -> 2 -> 4 -> 4 -> 5 -> 5 -> ... 2개씩 나열하며 3번은 맨 앞에 나열한 방식! 근데 사실 방식을 아무리 알더라도 이렇게..

세무민의 코딩일기 : [HackerRank] Sparse Arrays 문제 풀기

최근에 자소서에 몰두하다가 메일함을 열어봤더니..... HackerRank에서 문제를 풀라고 메일이 왔길레 풀어봤습니다. 오늘 제가 풀은 문제입니다. Strings 배열과 queries 배열의 일치한 수 만큼 출력해주면 됩니다. 이 문제는 쉽게 풀 수 있었는데 문자열 비교를 해주면 끝! # Complete the matchingStrings function below. def matchingStrings(strings, queries): result = [] for i in range(len(queries)): count = 0 for j in range(len(strings)): if queries[i] == strings[j]: count += 1 result.append(count) return r..

세무민의 코딩일기 : 프로그래머스 가장 큰 수 문제 풀기!

우선 토요일에 시험을 보고 왔는데.... 생각보다 많이 어려웠고.... 나란녀석 바보같은 실수로 제출을 안해버리는 클라스까지 보여줬다.... 즉... 개망했다. 망했다는 수준보다 더 뛰어넘어서 멘붕이 왔지만 그래도 극복하고 다시 공부해야겠다는 생각을 가졌다. 이번 문제는 말 그대로 가장 큰수를 출력하면 되는데 제공 된 배열을 기반으로 큰 수를 출력하면 됩니다. # 가장 큰 수 number = [3, 30, 34, 5, 9] result = [] for i in number: result.append(str(i)) print(result[0][0]) result.sort(key=lambda x : x*3, reverse=True) for i in range(len(result)): try: if resul..

세무민의 코딩일기 : 프로그래머스 K번째수 문제 풀기!

이번 문제는 정렬 문제로 가져왔는데 생각보다 문제 푸는 시간이 10분도 안걸렸다는 점 ㅎㅎ 사실 파이썬으로 풀어서...ㅎㅎ 내장함수들이 진짜 미쳤다는 걸 한번 더 느꼈습니당 ㅎ 문제는 위와 같습니다. 말 그대로 배열 한개가 존재할 때! i부터 j까지 분할 -> 정렬 -> k번째 수 반환! 위의 로직처럼 구현하면 끝! 생각보다 코드의 길이가 짧습니다 ㅎ 말 그대로 I부터 J까지 분할한 후 리스트를 정렬해주고 그 값을 k번째를 결과값으로 출력해주면 끝! 그렇지만 여기서 i - 1과 k - 1을 한 이유는 우리가 첫번째라고 가정하더라도 리스트의 첫번째 시작은 0이기 때문! 정답이면 이런 화면이 출력됩니다! 우선 더 열심히 공부해야겠네요 ㅎㅎ 무튼 이번 포스팅도 끝!

세무민의 코딩일기 : [HackerRank] Repeated String 문제 풀기

www.hackerrank.com/challenges/repeated-string/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup Repeated String | HackerRank Find and print the number of letter a's in the first n letters of an infinitely large periodic string. www.hackerrank.com 우선 위에 사이트에 접속하면 문제를 직접 볼 수 있습니다. 이번에 풀은 문제는 Repeated String! 사실 난이도가 쉽다고 써있지만..... 체감상 어렵다..... 문제는 위와 같..

세무민의 코딩일기 : 코딩 테스트를 준비해보자....[부제 : linked list]

흠... 우선 서류 통과를 한 기업이 생겼는데.... 최근들어 문제가 발생했다. 서류 통과 후 알고리즘 테스트인지 아니면 시스템 설계하는 테스트인지 정확하게 알려진 건 없지만 코딩 테스트를 본다고 한다. 그래서 급하게 공부를 시작했지만 쉽지 않다는 걸 느끼게 되었구 시험을 못보더라도 꾸준히 알고리즘 공부를 해야겠다는 생각에 같이 공부할 예정이다. 우선 기본적으로 공부할 내용은 linked-list! 사실 Array와 linked-list 두개가 주로 사용되지만 때로는 두개의 성능의 차이로 사용되는 부분이 다르다. arraylist는 많은 양에 자료를 추가하거나 삭제하는 과정에서 성능이 저하되지만 그에 비해 linked-list는 데이터 추가하거나 삭제하는 과정이 효율적이다. 또 다른 차이로는 arrayl..