본문 바로가기

분류 전체보기325

Ruby Enumerable.zip 사용 방법 (루비 배열, 해시 데이터 묶는 방법) Ruby Enumerable.zip 사용 방법 (루비 배열, 해시 데이터 묶는 방법) Ruby에서 Enumerable(열거 가능)한 객체에는 zip 이라는 메소드가 있습니다. 배열, 해시와 같이 반복문 사용이 가능한 객체에 zip을 사용하여 zip 메소드를 사용한 객체의 길이 만큼 인수로 전달하는 객체들의 값들의 같은 index에 해당하는 데이터들을 묶어 새로운 배열로 반환해줍니다. Python에서도 내장함수로 zip이 존재하고, JavaScript에서는 이런 기능이 없어 map을 사용해 직접 구현해야합니다. 저같은 경우 2개 이상의 배열에서 같은 인덱스에 존재하는 값들을 반복문을 돌며 사용해야할 때 유용하게 사용하고 있는데요! 그럼 zip 메소드 사용 방법에 대해 알려드리도록 하겠습니다. 목차 기본 z.. 2022. 11. 21.
Ruby Enumerable.partition 사용 방법 (루비 배열, 해시 조건별로 나누기) Ruby Enumerable.partition 사용 방법 (루비 배열, 해시 조건별로 나누기) Ruby에서 Enumerable(열거 가능)한 객체에는 parition 이라는 메소드가 있습니다. 이 메소드를 사용하면 열거 가능한 객체인 배열, 해시를 원하는 조건에 따라 2개의 배열로 간단하게 나눌 수 있습니다. javasciprt에서는 underscore.js 라이브러리에서 제공해주는 partition 을 사용하거나 reduce 를 사용하여 직접 나눠주곤 했는데 Ruby에서는 기본으로 제공합니다. 그럼 partition 메소드 사용방법을 알려드리도록 하겠습니다. Enumerable.partition 사용 방법 arr1 = (1..10).partition { |v| v.odd? } p arr1 # [[1, .. 2022. 11. 18.
Ruby 문자열, 심볼 대문자 소문자 변환 방법 (첫글자만 대문자로 / 대문자를 소문자로 / 소문자를 대문자로 / 대문자는 소문자로, 소문자는 대문자로) Ruby 문자열, 심볼 대문자 소문자 변환 방법 (첫글자만 대문자로 / 대문자를 소문자로 / 소문자를 대문자로 / 대문자는 소문자로, 소문자는 대문자로) Ruby에서 문자열과 심볼을 다룰 때 대문자 소문자 변환 방법에 대해 알려드리도록 하겠습니다. 변환하는 방법은, 첫글자만 대문자로 변환하는 방법 - String.capitalize 소문자를 대문자로 변환하는 방법 - String.upcase 대문자를 수문자로 변환하는 방법 - String.downcase 소문자는 대문자로, 대문자는 소문자로 변환하는 방법 - String.swapcase 심볼에서 사용 - Symbol.capitalize, Symbol.upcase, Symbol.downcase, Symbol.swapcase 위 순서대로 알려드리도록 하겠습.. 2022. 11. 17.
프로그래머스 코딩테스트 연습 Level 2 - 게임 맵 최단거리 (JavaScript) 프로그래머스 코딩테스트 연습 Level 2 - 게임 맵 최단거리 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 깊이/너비 우선 탐색(DFS/BFS) 관련 문제인, [게임 맵 최단거리] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그.. 2022. 11. 16.
프로그래머스 코딩테스트 연습 Level 3 - 베스트앨범 (JavaScript/Python) 프로그래머스 코딩테스트 연습 Level 3 - 베스트앨범 (JavaScript/Python) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 3 중 해시(Hash) 관련 문제인, [베스트앨범] 문제를 JavaScript 와 Python를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 gen.. 2022. 11. 15.
프로그래머스 코딩테스트 연습 Level 2 - 위장 (JavaScript/Python) 프로그래머스 코딩테스트 연습 Level 2 - 위장 (JavaScript/Python) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 해시(Hash) 관련 문제인, [위장] 문제를 JavaScript 와 Python를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질.. 2022. 11. 14.
프로그래머스 코딩테스트 연습 Level 2 - 전화번호 목록 (Python) 프로그래머스 코딩테스트 연습 Level 2 - 전화번호 목록 (Python) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 해시(Hash) 관련 문제인, [전화번호 목록] 문제를 Pythoon를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지.. 2022. 11. 11.
프로그래머스 Level2 2018 KAKAO BLIND RECRUITMENT 문제 - 압축 (JavaScript) 프로그래머스 Level2 2018 KAKAO BLIND RECRUITMENT 문제 - 압축 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 2018 KAKAO BLIND RECRUITMENT 문제인, [압축] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW.. 2022. 10. 24.
프로그래머스 Level2 2019 카카오 개발자 겨울 인턴십 문제 - 튜플 (JavaScript) 프로그래머스 Level2 2019 카카오 개발자 겨울 인턴십 문제 - 튜플 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 2019 카카오 개발자 겨울 인턴십 문제인, [튜플] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 .. 2022. 10. 21.
프로그래머스 Level2 2018 KAKAO BLIND RECRUITMENT 문제 - 캐시 (JavaScript) 프로그래머스 Level2 2018 KAKAO BLIND RECRUITMENT 문제 - 캐시 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중 2018 KAKAO BLIND RECRUITMENT 문제인, [캐시] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 .. 2022. 10. 20.
프로그래머스 코딩테스트 연습 Level 2 - 예상 대진표 (JavaScript) 프로그래머스 코딩테스트 연습 Level 2 - 예상 대진표 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중, [예상 대진표] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 .. 2022. 10. 19.
프로그래머스 코딩테스트 연습 Level 2 - 짝지어 제거하기 (JavaScript) 프로그래머스 코딩테스트 연습 Level 2 - 짝지어 제거하기 (JavaScript) Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중, [짝지어 제거하기] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다. 문제 문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다... 2022. 10. 18.