세무민의코딩일기 42

세무민의 알고가자 : 프로그래머스 문자열 내 마음대로 정렬하기 문제 풀이

오늘 풀어 볼 문제는 문자열 내 마음대로 정렬하기! 문제 설명 및 제한 조건 입출력 풀이 사실 이번 문제는 10분?정도 걸렸던거 같네요 ㅎㅎ 사실 너무 쉬운 문제라서 포스팅하는게 맞는지 의문이 들었지만 해봅니다. 이번 문제에서는 n번째 값을 기준으로 정렬을 해주면 됩니다. 또한 같은 값이 존재한다면 사전순으로 나열하면 된다고 하네요! 여기서 초점을 둬야하는 부분은?! 1. 정렬을 2번 해주기! 정렬을 2번하는 건 사전순으로 한번 정렬해준 뒤 n을 기준으로 정렬해주기 위해서! 이렇게 문제를 접근하면 끝입니다. 코드는 2가지 방법으로 풀어봤어요! 코드 def solution(strings, n): # 방식 1 strings.sort() strings.sort(key=lambda x : (x[n])) retu..

세무민의 코딩일기 : 프로그래머스 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..

세무민의 코딩일기 : 프로그래머스 완주하지 못한 선수 문제 풀기

이번에 풀어볼 문제는 완주하지 못한 선수! 이 문제는 생각해보면 쉽지만 효율성에서 통과하기 어려웠던 문제 중 하나 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한 사항 및 입출력 예시 [ 제한사항 ] 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이..

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

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

세무민의 코딩일기 : 프로그래머스 크레인 인형뽑기 게임 문제 풀기

사실 동적 알고리즘과 그리디로 멘탈이 탈탈 털렸는데 이번 문제 풀고 멘탈이 회복된 느낌??...ㅎㅎ 일단 30분내로 한문제를 풀었다는 것으로 의미를 둬야겠다. 이번 문제는 2019년도 카카오톡 개발자 겨울 인턴십 문제 중 1개이다. 문제 설명 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한..

세무민의 코딩일기 : 프로그래머스(SQL) 최대값 구하기 문제 풀기

프로그래머스 문제를 풀다가 멘붕이 와서..... 멘탈좀 케어하면서 SQL 문제를 풀어본 적이 없어서 포스팅을 생각하면서 한개 풀어봤습니다 ㅎ 오늘의 문제는 최댓값 구하기! 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAMETYPENULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DA..

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

이번에 포스팅할 문제는 모의고사 문제! 위의 조건이 주어졌을 때 조건에 정답이 가장 많이 일치하는 사람을 선택해주면 됩니다 위에서 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이기 때문! 정답이면 이런 화면이 출력됩니다! 우선 더 열심히 공부해야겠네요 ㅎㅎ 무튼 이번 포스팅도 끝!