본문 바로가기

알고리즘/프로그래머스43

[python] 같은 숫자는 싫어(연습문제) 문제는 위와 같다. 입력받은 배열에서 연속적으로 나타나는 숫자를 하나만 남기고 전부 제거하면 된다. 단 순서를 유지하여 연속된 숫자를 제거한 배열을 반환해야 한다. 따라서 [1, 1, 2, 2, 1, 1] 이란 배열을 입력받으면 [1, 2]가 아니라 [1, 2, 1]을 반환해야 한다. 예제를 확인해보면 [1, 1, 3, 3, 0, 1, 1]을 입력받는다면 연속으로 나오는 숫자를 하나씩 제거하여 [1, 3, 0, 1]을 반환하는 것을 확인할 수 있다. 연속된 숫자가 아닌 0은 그대로 반환해 주면 된다. 설계 및 구현 구현을 위해 주어진 함수는 위와 같다. 연속된 숫자를 제거해야 하는 배열 arr를 매개변수로 받아 반환해주는 함수이다. 간단히 생각해 보면, arr의 맨 처음 숫자는 반환 값에 무조건 들어가기.. 2020. 3. 18.
[C++] 가운데 글자 가져오기(연습문제) 문제는 위와 같다. 입력받은 문자열의 가운데 글자를 반환하면 되는 간단한 문제이다. 단어의 길이가 홀수라면 가운데 글자는 한 글자 짝수라면 두 글자를 반환하면 된다. 따라서 "abcde" 라면 가운데에 존재하는 "c"를 반환하고 "qwer"이면 가운데에 "we"를 반환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 반환 타입이 string이며 매개변수로 가운데 글자를 찾아야 할 string s를 입력받는다. 해당 문제를 해결하기 위한 설계는 앞서 파이썬을 사용한 풀이에서 진행했으므로 바로 설계에 맞추어 구현해 보면 C++은 파이썬처럼 슬라이싱을 진행할 수 없기 때문에 삼항연산자를 이용하여 짝수 홀수일 때의 경우를 나누어 반환해 주었다. string에 내장되어 있는 substr함수를 사용하여 전달받은.. 2020. 2. 26.
[python] 가운데 글자 가져오기(연습문제) 문제는 위와 같다. 입력받은 문자열의 가운데 글자를 반환하면 되는 간단한 문제이다. 단어의 길이가 홀수라면 가운데 글자는 한 글자 짝수라면 두 글자를 반환하면 된다. 따라서 "abcde" 라면 가운데에 존재하는 "c"를 반환하고 "qwer"이면 가운데에 "we"를 반환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 가운데 글자를 찾아낼 문자열을 s매개변수에 입력받아 반환해 주면 된다. 쉽게 생각하면 짝수 홀수의 경우를 나누어 해결된다. 짝수일 경우에는 가운데 위치한 2개의 문자를 반환해야 한다. 즉, 전체 문자열을 반으로 나누어 생각하면 잘린 첫 번째 부분의 맨뒤 문자와 두 번째 부분의 맨 앞 문자가 가운데 2개의 문자가 될 것이다. 인덱스로 생각하면 0부터 시작하므로 (전체 길이//2-1)와 된다.. 2020. 2. 26.
[C++] 2016년(연습문제) 문제는 위와 같다. 목표는 굉장히 간단하다 2016년 a월 b일이 무슨 요일인지를 반환해 주면 된다. a, b는 매개변수로 입력받고 요일은 SUN, MON, TUE, WED, THU, FRI, SAT로 존재한다. 16년은 윤년이므로 2월을 29일까지로 계산해야 한다. 예시로 a=5, b=24 즉, 16년 5월 24일은 화요일이므로 TUE를 반환하는 것을 확인할 수 있다. 실제로 16년 5/24는 화요일임을 확인할 수 있다. 설계 및 구현 구현을 위해 주어지는 함수는 매개변수 a, b를 받는 함수로 반환타입은 string으로 주어진다. 작성할 코드에 대해 구상은 앞서 파이썬과 동일하게 수행하면 된다. ① 요일을 담고 있는 리스트, 각 월별 일수 필요 ② 입력받은 날짜가 1/1 기준으로 며칠이 지났는지 계산.. 2020. 2. 26.
[python] 2016년(연습문제) 문제는 위와 같다. 목표는 굉장히 간단하다 2016년 a월 b일이 무슨 요일인지를 반환해 주면 된다. a, b는 매개변수로 입력받고 요일은 SUN, MON, TUE, WED, THU, FRI, SAT로 존재한다. 16년은 윤년이므로 2월을 29일까지로 계산해야 한다. 예시로 a=5, b=24 즉, 16년 5월 24일은 화요일이므로 TUE를 반환하는 것을 확인할 수 있다. 실제로 16년 5/24는 화요일임을 확인할 수 있다. 설계 및 구현 구현을 위해 주어지는 함수는 매개변수 a, b를 받는 함수로 주어진다. 작성할 코드에 대해 구상해 보면 요일은 7일을 단위로 같은 요일이 반복된다. 그렇다면 입력받은 날짜가 1/1부터 며칠이 지난날인지 구해 7로 나눈 나머지를 확인하면 요일을 알 수 있다. 정리하면 ① .. 2020. 2. 26.
[C++] 체육복(탐욕법, Greedy) 문제는 위와 같다. 점심시간에 도둑이 들어 체육시간에 사용해야 하는 체육복을 도난당한 상황이다. 이때 여벌의 체육복을 가져온 학생이 있어 도난당한 학생들에게 체육복을 빌려주어 체육 수업을 들으려고 한다. 이때 체육 수업을 들을 수 있는 최대의 학생수를 구하는 것이 목표이다. 전체 학생수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담기 배열 reserve 가 존재한다. 학생들의 번호의 기준은 체격 순서이며 체육복은 체격 차이로 인해 자신의 앞뒤 번호의 학생의 체육복만 입을 수 있다. 즉, 7번 학생은 6, 8번 학생의 체육복만 빌릴 수 있고 10번 학생은 9, 11번 학생의 체육복만 빌릴 수 있다. 전체 학생수 n은 2~30이고 도난당한 학생의 번호.. 2020. 2. 10.