본문 바로가기

알고리즘43

[python] 소수 찾기(연습문제) 문제는 간단하다 1부터 입력받은 숫자 n까지 중 소수가 몇 개 있는지 반환하면 된다. n이 10이라면 1부터 10에는 2, 3, 5, 7 총 4개의 소수가 존재하므로 4를 반환하고 5라면 2, 3, 5 총 3개의 소수가 존재하므로 3을 반환한다. 설계 및 구현 주어진 함수는 n을 입력받아 개수를 반환하면 되는 함수이다. 소수의 개수를 구하는 알고리즘은 에라토스테네스의 체를 사용하면 된다. 내용은 2부터 소수를 구하고자 하는 구간의 모든 수를 나열하고 2는 소수이므로 2를 제외한 2의 배수들을 모두 지운다. 그다음 남은 수중 3은 소수이므로 제외하고 3의 배수를 모두 지운다. 이처럼 소수들의 배수들을 모두 지우는 과정을 반복하면 결국 소수만 남게 된다. 정리하면 ① n까지의 모든 숫자 나열 ② 2의 배수,.. 2020. 4. 3.
[C++] 수박수박수박수박수박수? (연습문제) 문제의 목표는 간단하다. "수박수박수박..."의 패턴의 문자열을 길이 n에 맞추어 반환하면 된다. 만약 n=3이라면 길이가 3이 되도록 "수박수"를 반환하고 n=5라면 "수박수박수"로 반환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 반환타입이 string이고 매개변수로 int형 변수 n을 가지는 함수이다. 구현 내용은 파이썬에서 고안하였으므로 바로 코드를 작성하면 C++ 에서는 파이썬처럼 문자열 슬라이싱을 제공하지 않기 때문에 횟수만큼 "수박" 문자열을 이어붙인뒤 전달받은 길이의 짝, 홀을 판단 홀수일 경우 "수"를 붙여반환하고 짝수라면 그대로 반환하도록 하여 문제의 목표를 만족시켰다. 위의 코드를 통해 채점을 통과할 수 있었다. ※ 새롭게 배운것 다른 사람의 풀이를 통해 짝수 홀수를 비트연산자.. 2020. 3. 30.
[python] 수박수박수박수박수박수? (연습문제) 문제의 목표는 간단하다. "수박수박수박..."의 패턴의 문자열을 길이 n에 맞추어 반환하면 된다. 만약 n=3이라면 길이가 3이 되도록 "수박수"를 반환하고 n=5라면 "수박수박수"로 반환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 패턴의 길이를 입력받을 매개변수 n을 가지고 있는 간단한 함수이다. 구현 내용은 "수박"이라는 문자열이 반복된다고 생각하면 된다. 이때 입력받은 길이 n이 짝수라면 그대로 출력하면 되지만 홀수일 경우에는 마지막에 "수박"에서 "수"부분만 출력되도록 하면 된다. 따라서 짝, 홀수 모든 경우를 동시에 처리하기 위해 입력받은 길이에 "수박"의 문자열 한 패턴만 더 붙이고 입력받은 길이만큼만 반환해주면 자동적으로 패턴만큼 잘리게 된다. 정리하면 ① 홀수일 때도 같이 처리하기.. 2020. 3. 30.
[C++] 서울에서 김서방 찾기(연습문제) 문제의 목표는 seoul이라는 배열에서 "Kim"이라는 문자열의 위치 x를 찾아 "김서방은 x에 있다"라는 문자열을 반환하면 된다. 이때 "Kim"은 한 번만 등장하며 문자열의 위치 x는 인덱스 번호로 ["Kim", "a"] 라면 x는 0이고 ["a", "Kim"]이라면 x는 1이 된다. 설계 및 구현 구현을 위해 주어진 함수는 string 반환값을 가지며 string타입을 원소로 가지는 벡터 seoul을 매개변수로 가지고 있다. 구현에 필요한 부분은 파이썬과 동일하다. ① 배열에서 "Kim"의 인덱스 번호 찾기 ② 찾아낸 인덱스 번호를 반환할 문자열에 입력하여 반환 ①의 수행을 위해 우선 algorithm헤더에 있는 find(s, e, target) 함수를 사용하였다. 해당 함수는 s, e구간 사이에서.. 2020. 3. 29.
[python] 서울에서 김서방 찾기(연습문제) 문제의 목표는 seoul이라는 배열에서 "Kim"이라는 문자열의 위치 x를 찾아 "김서방은 x에 있다"라는 문자열을 반환하면 된다. 이때 "Kim"은 한 번만 등장하며 문자열의 위치 x는 인덱스 번호로 ["Kim", "a"] 라면 x는 0이고 ["a", "Kim"]이라면 x는 1이 된다. 설계 및 구현 설계를 위해 주어진 함수는 "Kim"의 위치를 찾아야 하는 seoul이라는 배열을 매개변수를 가진 함수이다. 가장 필요한 것은 1~1000개의 원소를 가진 배열에서 "Kim"의 인덱스 번호를 찾아내어 문자열에 입력하면 되는 간단한 문제이다. ① 배열에서 "Kim"의 인덱스 번호 찾기 ② 찾아낸 인덱스 번호를 반환할 문자열에 입력하여 반환 ①을 위해서 index() 함수를 사용한다. 해당 함수는 위치를 반환.. 2020. 3. 29.
[C++] 문자열 다루기 기본(연습문제) 문제의 목표는 전달받은 문자열 s가 길이가 4 또는 6을 만족하고 숫자로만 이루어져 있는지를 확인하여 만족하면 True를 아니라면 False를 반환하면 된다. 예를 들어 s가 "12345"로 주어진다면 길이가 4 또는 6이 아니므로 False를 반환하고 "0000"으로 주어진다면 길이가 4이고 숫자로만 이루어져 있으므로 True를 반환하면 된다. 설계 및 구현 구현을 위해 주어진 함수는 반환 타입이 bool이며 string타입의 매개변수 s를 가지는 함수이다. 구현을 위한 내용은 파이썬을 사용한 풀이에서 정리한 것을 그대로 사용하면 다음과 같다. ① s의 길이가 4 또는 6 인지 확인 ② s가 숫자로만 이루어진 문자열인지 확인 ③ 위 두가지 조건을 and 연산을 통해 둘 다 참이라면 True를 반환 아니.. 2020. 3. 26.