2023. 6. 3. 09:01ㆍAlgorithm
1. 7의 개수
(문제 설명, 제한사항, 입출력 예)
정수 배열이 주어질 때, 배열 안에 7이 총 몇 개 있는지 구하라는 문제이다.
(내가 생각한 풀이 과정)
파이썬 문자열에는 count()라는 찾고 싶은 문자의 개수를 구할 수 있는 내장 함수가 존재한다.
배열 속에 들어있는 요소들을 하나의 문자열로 변환한 후, count 함수를 이용해서 7의 개수를 구하면 된다.
(코드)
💡 내 코드
def solution(array):
return str(array).count('7')
2. 잘라서 배열로 저장하기
(문제 설명, 제한사항, 입출력 예)
주어진 문자열을 주어진 정수만큼 잘라서 저장한 배열을 반환하라는 문제이다.
(내가 생각한 풀이 과정)
문자열(my_str) 속에 있는 한 문자(i)씩 반복을 하면서,
추가할 문자열(s)이 주어진 정수(n) 만큼의 길이(len(s))가 되면 별도의 배열(answer)에 문자열(s)을 추가하면 되겠다고 생각했다.
(코드)
💡 내 코드
def solution(my_str, n):
answer = []
s = ""
for i in my_str:
if len(s) < n:
s += i
else:
answer.append(s)
s = ""
s += i
answer.append(s)
return answer
💡 다른 사람의 풀이 코드
문자열 슬라이싱을 이용해서 문제를 풀어줄 수도 있다.
아래 코드는 일일이 말로 설명하면 약간 복잡한 감이 없지 않아 있어 예시를 들어 설명하도록 하겠다.
주어진 문자열이 "abcdef123"이고, 주어진 정수는 3이라고 가정해 보자.
우리가 문자열 슬라이싱으로 0부터 3까지, 4부터 6까지, 7부터 9까지 잘라야 한다면, 0 -> 3 -> 6의 순서대로만 값을 빼주고 end 값은 n을 더해주면 구할 수 있다.
혹여나 맨 마지막이 인덱스 9까지 존재하지 않고, 7이나 8까지만 존재하더라도 문제 되지는 않는다.
"슬라이싱은 범위를 초과해도 에러가 나지 않는다"라는 성질이 존재하기 때문이다.
def solution(my_str, n):
return [my_str[i: i + n] for i in range(0, len(my_str), n)]
3. 중복된 숫자 개수
(문제 설명, 제한사항, 입출력 예)
정수가 담긴 배열 안에 n이라는 정수가 몇 개 있는지를 구하라는 문제이다.
(내가 생각한 풀이 과정)
1번 문제에서 사용했던 count() 함수를 리스트 자료형에서도 사용할 수 있다. 한번 다시 사용해 보자.
(코드)
💡 내 코드
def solution(array, n):
return array.count(n)
4. 머쓱이보다 키 큰 사람
(문제 설명, 제한사항, 입출력 예)
반 친구들의 키가 담겨있는 배열(array)과 어떤 한 친구의 키(height)가 주어질 때, 그 친구보다 키 큰 사람의 수를 구하라는 문제이다.
(내가 생각한 풀이 과정)
이번에도 두 가지 풀이 방법이 떠올랐다.
하나는, 배열 안에 있는 키들을 하나씩 반복하면서 주어진 키 값(height)과 비교하면서 count 하는 방법.
또 다른 하나는, 배열 안에 주어진 키 값(height)을 추가한 후, 배열을 정렬, 키 값의 인덱스를 구하는 방법이다.
"내 코드"에는 첫 번째 방법을, "다른 사람의 풀이 코드"에는 두 번째 방법을 작성했다.
(코드)
💡 내 코드
def solution(array, height):
answer = 0
for i in array:
if i > height:
answer += 1
return answer
💡 다른 사람의 풀이 코드
def solution(array, height):
array.append(height)
array.sort(reverse=True)
return array.index(height)