가운데 글자 가져오기

 

 문제 설명

 

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

 

 제한 사항

 

  • s는 길이가 1 이상, 100이하인 스트링입니다.

 

 입출력 예

 

s return
"abcde" "c"
"qwer" "we"

 

 Python 코드

 

def solution(s):
    return s[(len(s)-1)//2 : len(s)//2+1]
  • 찍수인 경우 // 연산자로 몫을 구하고, 홀수일 경우에도 Slicing으로 계산
def solution(s):

    answer = ''

    if len(s) % 2 == 1:
        return s[int(len(s)/2)]
    else:
        return s[int(len(s)/2)-1 : int(len(s)/2)+1]

* 참고 링크 : https://jeongchul.tistory.com/642

# 가운데 글자 가져오기
def solution(s):
    # 글자의 길이
    s_length = len(s)
    # 글자의 길이가 홀수인 경우 가운데 글자를 뽑아내기
    if s_length % 2 == 1:
        answer = s[s_length // 2]
    # 글자의 길이가 짝수인 경우 가운데 두 글자를 뽑아내기
    if s_length % 2 == 0:
        answer = s[(s_length // 2) - 1:(s_length // 2) + 1]
    return answer

* 참고 링크 : https://greedysiru.tistory.com/381

  • 나머지 연산자 %
    어떤 정수를 2로 나누었을 때 나머지가 1이면 홀수, 0이면 짝수.
def solution(s):
	if len(s) % 2 == 1:
    		return 가운데 값
#s의 길이를 2로 나눈 나머지가 1이면 = 홀수면

"""
!POINT!
여기서 == 1은 쓰지 않아도 된다!
왜? 조건문에서는 '기냐 아니냐'를 보기 때문에, 
%를 2로 나눴기 때문에 0과 1의 값만 나오는 상황에서
숫자값 0은 False, 1은 True가 된다.
"""

#나머지가 1이 아니면 = 짝수면
	else:
		return 가운데 값에서 +1, -1 값

 

  • 나누기 연산자 //
def solution(s):
	if len(s) % 2 == 1:
		return s[len(s)//2]

#s의 리스트 s[]를 만들고 = 해당 인덱스의 '값'을 출력하기 위해
#len(s)//2한 인덱스의 값을 반환

	else:
		return 가운데 값에서 +_1 값
  • 최종 코드

 

def solution(s):
	if len(s) % 2 == 1:
		return s[len(s)//2]
	else:
		return s[(len(s)//2-1) : (len(s)//2+1)]

#짝수에서 출력하는 인덱스의 
#-1값 == len(s)//2-1)과 
#+1값 == (len(s)//2+1)을 함께 반환하자

* 참고 링크 : https://velog.io/@joy/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EA%B0%80%EC%9A%B4%EB%8D%B0-%EA%B8%80%EC%9E%90-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

* 파이썬에수 함수를 쓰는 공식

def 함수명(인풋):
		코드1
		코드2 
		...
		return 아웃풋
        
#s라는 단어에 영향을 주는 solution라는 함수를 만들라고 했으니까

def solution(s):
    return 아웃풋

* 참고 링크 : https://velog.io/@joy/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EA%B0%80%EC%9A%B4%EB%8D%B0-%EA%B8%80%EC%9E%90-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

 

* 산술 연산자

* 참고 링크 : https://wikidocs.net/1153

 

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

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

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

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

# 결과값 10

 

* 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(string s) {
    string answer = "";
    static const size_t TWO = 2;
    const size_t length = s.length();
    
    if(length % TWO == 0)
    {
        //짝수
        answer += s[length / 2 - 1];
        answer += s[length / 2];
    }
    else
    {
        //홀수
        answer += s[length / 2];
    }
    return answer;
}

* 참고 링크 : https://blockdmask.tistory.com/275

두 정수 사이의 합

 

 문제 설명

 

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

 제한 사항

 

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

 

 입출력 예

 

a b return
3 5 12
3 3 3
5 3 12

 

 Python 코드

 

def solution(a, b):
    if a > b : 
        a , b = b , a
    return sum(range(a, b+1))

 

def solution(a, b):

    answer = 0

    for i in range(min(a,b), max(a,b)+1):
    
        answer += i
        
    return answer

 

def solution(a, b):

    return ( abs(a - b) + 1)  * ( a + b ) // 2
  • 수학 공식 사용
  • 1부터 N까지의 총합은 N(N+1)/2 
  • a에서 b까지의 총합 ((a-b)+1) * (a+b) // 2

* 참고 링크 1 : https://jeongchul.tistory.com/645

* 참고 링크 2 : https://velog.io/@cosmos/Programmers%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%91%90-%EC%A0%95%EC%88%98-%EC%82%AC%EC%9D%B4%EC%9D%98-%ED%95%A9-python

* abs ( ) 함수 : 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수

abs(3)
# result : 3

abs(-3)
# result : 3

abs(-1.2)
# result : 1.2

 

* min( ) 함수 : min(iterable)은 max 함수와 반대로, 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수

min([1, 2, 3])
# result : 1

min("python")
# result : 'h'

 

* max( ) 함수 : max(iterable)는 인수로 반복 가능한 자료형을 입력받아 그 최댓값을 돌려주는 함수

max([1, 2, 3])
# result : 1

max("python")
# result : 'y'

 

* 참고 링크 : https://wikidocs.net/32

 

 C++ 코드

 

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

long long solution(int a, int b) {
    long long answer = 0;
    
    long long sum = 0;
    if ( a > b ){
        for ( int i = b; i < a+1; i++)
            answer += i;
    } 
    else if ( a < b ) {
        for ( int i = a; i < b+1; i++)
            answer += i;
    }
    else {
        answer = a;
    }
    
    return answer;
}

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

x만큼 간격이 있는  n개의 숫자

 

 문제 설명

 

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

 

 제한 사항

 

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

 

 입출력 예

 

x n answer
2 5 [ 2, 4, 6, 8, 10 ]
4 3 [ 4,  8, 12 ]
-4 2 [ -4, -8 ]

 

 Python 코드

def solution(x, n):
    return [x * i for i in range(1, n+1)]
def solution(x, n):
    return [ x + (x*i) for i in range(n)]

* 참고 링크 : https://wayhome25.github.io/algorithm/2017/03/04/number_generator/

# 정수 x, 자연수 n이 매개변수로 주어짐

def solution(x, n):
	# 정답을 저장할 List 변수를 선언
    # n개의 None으로 초기화
    answer = [None] * n
    
    # 0부터 n-1까지 반복
    for i in range(n):
    	# answer의 현재 index에 x * (i + 1) 값을 저장
        answer[i] = x * (i + 1)
        
    # answer의 값을 반환
    return answer

* 참고 링크 : https://brightnightsky77.tistory.com/397

 

* range() 함수 : 

  • range( 시작숫자, 종료숫자, step )
  • range() 함수의 기본 형태는 List Slicing과 유사
  • range() 함수는 시작 숫자와 step은 생략이 가능
  • for in 반복문에서 range 함수 활용 가능
for 변수 in range(횟수):
	반복할 코드
for i in range(100):
	print("Hello, World!")

* 참고 링크 1 : https://wikidocs.net/16045

* 참고 링크 2 : https://dojang.io/mod/page/view.php?id=2241 

 

 C++ 코드

 

#include <string>
#include <vector>

using namespace std;

vector<long long> solution(int x, int n) {
    vector<long long> answer;
    
    int temp = x;
    
     for (int i = 0; i < n; i++)
    {
           answer.push_back(x);
           x += temp;
    }
    return answer;
}

* 참고 링크 : https://chlqhqodlekt.tistory.com/m/118

#include <string>
#include <vector>

using namespace std;

vector<long long> solution(int x, int n) {
    vector<long long> answer;

    for(int i=1; i<=n; i++){
        answer.push_back(x*i);
    }

    return answer;
}

* 참고 링크 : https://ryulurala.tistory.com/m/165

짝수와 홀수

 

 문제 설명

 

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

 

 제한 사항

 

  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.

 

 입출력 예

 

num return
3 "Odd"
4 "Even"

 

 Python 코드

 

def solution(num):
	if num % 2 == 0:
    	return 'Even'
    else:
    	return 'Odd'
  • num이 짝수이면 Even을, 홀수이면 Odd를 리턴

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

def solution(num):
    return "Even" if num % 2 == 0 else "Odd"

 

* 참고 링크 : https://velog.io/@cosmos/Programmers%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A7%9D%EC%88%98%EC%99%80-%ED%99%80%EC%88%98-python

 

* 삼항연산자 (Ternary Operrators)

- 일반적으로 if ~ else 문을 통해서 해결할 수 있는 연산을 한 줄로 간단하고 간결하게 구현 가능

삼항 연산자 기본 형태

[True] if [Condition] else [False]

[참일떄] if [조건문] else [거짓일때]

# 짝수인지 홀수인지 판단

a = 10

# 기본 연산

if a % 2 == 0:
	print("Even")
else:
	print("Odd")


# 삼항 연산

print("Even") if a % 2 == 0 else print("Odd")

* 참고 링크 1 : https://blockdmask.tistory.com/551

* 참고 링크 2 : https://wikidocs.net/20701

 

 C++ 코드

 

#include <string>
#include <vector>

using namespace std;

string solution(int num) {
    string answer = "";
    
    if( num%2 == 0 )
        answer += "Even";
    else
        answer += "Odd";
    
    return answer;
}

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

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

 

 문제 설명

 

길이가 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