초보개발자 48

세무민의 코딩일기 : DB 공부할 때 팁! [Group By와 Order By만 잘해도 절반은 먹고 간다. ]

인턴을 하면서 느낀점은 프로그램의 성능 최적화는 DB에서 Select 하는 과정을 어떻게 하는지가 중요한거 같다. 일반적으로 Service에서 값을 원하는 형태로 변형하여 넘겨도 되지만 쿼리로 제작할 수 있다면 제일 베스트이다. 여기서 가장 중요한건 서브쿼리, 내장함수도 중요하지만 기본적인 Group by와 Order By의 중요성이다. 우선 이론적인 학습을 해보자. 1. GROUP BY 그룹이라는 말 처럼 AVG, SUM과 같이 전체 값을 연산했을 때 주로 사용되는데 일반적으로 여러개의 행을 이용하여 통계적인 값을 추출할 수 있다. 2. ORDER BY ORDER BY는 조회하려는 데이터를 정렬로 자주 사용되곤 한다. 일반적으로 쿼리를 제작하다보면 Group by 형식 오류를 자주 접하는 사람들이 있다..

DB/SQL 2021.05.07

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

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

세무민의 코딩일기 : 프로그래머스 다리를 지나는 트럭 문제 풀기

이번 문제는 다리를 지나는 트럭 문제! 이 문제는 기존에 Stack이나 Queue를 이용해서 문제를 푸는 걸 추천하지만 나는 list로 구현했당.... 사실 deque으로 구현했던 건 있으나 코드 실행은 문제 없지만 채점에서 실패한 것들이 존재해서..ㅎ 그냥 무난한 리스트로 ㅎ 문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7..

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

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

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

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

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

사실 동적 알고리즘과 그리디로 멘탈이 탈탈 털렸는데 이번 문제 풀고 멘탈이 회복된 느낌??...ㅎㅎ 일단 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..