수박수박수박수박수박수?

 

 문제 설명

 

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요.

예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

 

 제한 사항

 

  • n은 길이 10,000이하인 자연수입니다.

 

 입출력 예

 

n return
3 "수박수"
4 "수박수박"

 

 Python 코드

 

def solution(n):
    return ('수박'*n)[:n]

 

  • '수박' * n --> 입력받은 n만큼 '수박' 반복 
  • solution(3)이면 '수박수박수박' 이므로 slicing 필요 
  • 따라서 입력받은 n만큼 출력해주면 된다. [:n]
def solution(n): 
	answer = '' 
    
    for i in range(n): 
    	if i % 2 == 0: 
        	answer += '수' 
        else: 
        	answer += '박' 
    return answer

 

  • i를 2로 나눈 값이 0이면 짝수 --> '수' 추가 
  • i를 2로 나눈 값이 0이 아니면 홀수 --> '박' 추가 
  • n = 3이면 i = 0, answer = '수' / i = 1, answer = '수박' / i = 2, answer = '수박수' 
  • n = 4이면 i = 0, answer = '수' / i = 1, answer = '수박' / i = 2, answer = '수박수' / i = 3, answer = '수박수박'

 

* 참고 링크 : https://wooaoe.tistory.com/70

def solution(n):
    return "수박"*(n//2) + "수"*(n%2)

 

  • n을 2로 나눈 값이 반복되는 횟수
  • 그 횟수만큼 '수박'을 붙여주고, 홀수일 경우에는 뒤에 "수"가 한번 더 붙습니다.

* 참고 링크 : https://sinsomi.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Python-%EC%88%98%EB%B0%95%EC%88%98%EB%B0%95%EC%88%98%EB%B0%95%EC%88%98%EB%B0%95%EC%88%98%EB%B0%95%EC%88%98

 

* Slicing(슬라이싱) : 연속적인 객체들에 범위를 지정한 후 선택해서 객체들을 가져오는 방법 

- 기본 형태

a[start : end : step]
  • start : 슬라이싱을 시작할 시작 위치
  • end : 슬라이싱을 끝낼 위치로 end는 포함되지 않음
  • step : stride(보폭)라고도 불리며, 몇 개씩 끊어서 가져올지와 방향을 정하는 옵션

- 인덱스 값들의 위치

a = ['a', 'b', 'c', 'd', 'e']

# Index References
# -------------------------------
# |  a  |  b  |  c  |  d  |  e  |
# -------------------------------
# |  0  |  1  |  2  |  3  |  4  |    // 양수의 경우
# -------------------------------
# | -5  | -4  | -3  | -2  | -1  |    // 음수의 경우
# -------------------------------

 

- 특정 시작위치부터 끝까지 가져오기

  • a[ start : ]
a = ['a', 'b', 'c', 'd', 'e']

a[ 1 : ]
# result : ['b', 'c', 'd', 'e']

a[ -3 : ]
# result : ['c', 'd', 'e']

 

- 시작점부터 특정 위치까지 가져오기

  • a[ : end ]
a = ['a', 'b', 'c', 'd', 'e']
a[ : 2 ]

# result : ['a', 'b']

 

- 특정 위치부터 특정 위치까지 모두 가져오기

  • a[ start : end ]
a = ['a', 'b', 'c', 'd', 'e']

a[ 2 : 4 ]
# result : ['c', 'd']


a[ -4 : -2 ]
# result : ['b', 'c']

* 참고 링크 : https://twpower.github.io/119-python-list-slicing-examples

 

 C++ 코드

 

#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    string answer = "";
    
    for(int i=0; i<n; i++){
        if(i%2 == 0)
            answer += "수";
        else
            answer += "박";
    }
    
    return answer;
}

* 참고 링크 : https://jjeongil.tistory.com/643

평균 구하기

 

 문제 설명

 

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

 

 제한 사항

 

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

 

 입출력 예

 

arr return
[1, 2, 3, 4] 2.5
[5, 5] 5

 

 Python 코드

 

def solution(arr):
    return sum(arr) / len(arr)
  • 배열 arr의 합을 구해 배열 arr의 길이만큼 나눠 리턴

* 참고 링크 : https://it-garden.tistory.com/227

def solution(arr):
    answer = 0
    
    for i in arr:
        answer += i
    
    return answer / len(arr)

* 참고 링크 : https://jjeongil.tistory.com/773

def solution(arr):
    
    # 예외 피하기 위한 조건
    if len(arr) == 0:
        return 0
    
    return sum(arr) / len(arr)
  • 배열의 합을 구한뒤 배열의 길이로 나누어주면 평균 값을 구할 수 있다.
  • 단, 예외를 피하기 위해 배열의 길이가 0이면 0을 return한다.

* 참고 링크 : https://jokerldg.github.io/algorithm/2021/04/17/average.html

 

* len() 함수 : 매개변수로 들어온 문자열의 길이를 반환

- 내부에 있는 문자의 갯수 및 공백을 포함한 카운팅을 하여 반환해주는 함수

- 문자열의 길이를 구할 때 용이

strlen = "HelloWorld"
print(len(strlen))

# 결과값 10

 

* sum() 함수 :  합을 구해주는 함수

- sum() 함수의 인자로는 iterable이 들어가야 한다. (List, Tuple등이 있다.)

- sum(object)의 형태가 되어야 하며, 숫자(int, float)로만 구성되어 있어야 한다.

sum([1, 2, 3])   
# result : 6

sum([1, b, 3])   
# 숫자가 아닌 객체가 있을 때 Type Error 발생

 

 C++ 코드

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// arr_len은 배열 arr의 길이입니다.
double solution(int arr[], size_t arr_len) {
    double answer = 0;
    
    for (int i=0; i < arr_len; i++){
        answer += arr[i];
    }
    
    answer = answer / arr_len;
    return answer;
}

* 참고 링크 : https://jjeongil.tistory.com/613

 

#include <string>
#include <vector>

using namespace std;
double solution(vector<int> arr) {
	double answer = 0;
	for (int i = 0; i < arr.size(); i++)
		answer += arr[i];
	return answer/arr.size();
}

* 참고 링크 : https://it-and-life.tistory.com/211

+ Recent posts