본문 바로가기

Python Study/코드파이트_Intro 문제

Codesignal Intro 문제 풀이 (1~3)

728x90

Introduction

 

Python을 본격적으로 공부하고자

첫 관련 포스팅은 코드파이트에 'Codesignal' Intro 문제 풀이를 하도록 하겠습니다 총 60문제로 구성 되어있으며

엄청 기초적인 문제부터 난이도가 점점 올라갈 것으로 예상이 됩니다~

 

저처럼 Python을 이제 시작하시는 분들은 댓글로 의견이나 질문남겨주시면 같이 공부해 봐요~

혹시나 지나가다 들린 코딩 중,고수분들이 계시다면 조언도 함께 부탁 드립니다!


문제1.

 

Write a function that returns the sum of two numbers.

 

Example

For param1 = 1 and param2 = 2, the output should be add(param1, param2) = 3.

문제2.

Given a year, return the century it is in. The first century spans from the year 1 up to and including the year 100, the second - from the year 101 up to and including the year 200, etc.

 

Example

  • For year = 1905, the output should be
    centuryFromYear(year) = 20;
  • For year = 1700, the output should be
    centuryFromYear(year) = 17.

문제3.

Given the string, check if it is a palindrome

(palindrome is a string that reads the same left-to-right and right-to-left)

 

Example

  • For inputString = "aabaa", the output should be
    checkPalindrome(inputString) = true;
  • For inputString = "abac", the output should be
    checkPalindrome(inputString) = false;
  • For inputString = "a", the output should be
    checkPalindrome(inputString) = true.

 

 

 

(문제를 풀어보려고 하시는 분도 있을것 같아 해답은 쭈욱 밑에 작성할게요)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

나만의 풀이

 

//param 값은 문제에 임의로 지정되어 있어서 코딩에는 따로 입력받거나 선언하지 않았습니다.

문제1.

def add(param1, param2):
    return param1 + param2

 

add 함수를 만들어 2개의 인자값을 받은 후

return 값으로 2개 param값을 더함

 

문제2.

def centuryFromYear(year):
    if year % 100 == 0:
        century = int(year/100)
    else:
        century = int(year/100)+1
    
    return century

 

2번 문제 부터 벌써 생각을 하게 만드는 문제입니다.

 

우선 년도에 따른 'century(세기)'를 검출 해야하는 문제인데

1세기는 (1~100년)

2세기는 (101~200년) 으로 한 세기에 마지막은 모두 100단위로 끝나는 것을 알수 있습니다.

그리고 그 이후 년도부터는 +1 세기가 되기 때문에

우선 100으로 나눴을때 나머지가 0이 되는 년도와 그렇지 않은 년도로 구분을 하면

쉽게 풀수 있는 문제 입니다.

(int 선언하지 않으면 정수가 아닌 소수점으로 계산하기 때문에 붙여 주셔야 합니다.)

 

  

문제3.

해당 문제는 array[::]를 사용할줄 알면 쉽게 풀 수 있는 문제입니다.

먼저 arr[::],arr[A:B:C],arr[::-1]과 같이 배열의 index에 접근하는 방법을 'Extended Slices' 라고 합니다.

 

arr[A:B:C] 를 설명하자면 index A ~ index B까지 C만큼의 간격으로 배열을 만들라는 의미입니다.

 

A,B,C가 None 값일 경우의 의미는 하기와 같습니다.

 

A = None // 배열의 처음부터

B = None // 배열의 마지막까지

C = None // '1' 간격으로

 

예를 들어

arr = range(5)

 

arr[:4:1] // A가 None이므로 처음부터 즉 1부터 B(4) 까지 1간격으로

output -> [1,2,3,4]

 

arr[2::2] // B가 None이므로 끝까지 즉 A(2)부터 5까지 2간격으로

output -> [2,4]

 

arr[::-1] // -1은 역순으로 진행하라는 의미입니다.

output -> [5,4,3,2,1]

 

 

cf) https://docs.python.org/release/2.3.5/whatsnew/section-slices.html

 

 

위 설명을 보고 arrary를 이해하셨다면 아주 쉽게 푸실수 있어요

 

def checkPalindrome(inputString):
    return (inputString == inputString[::-1])

 

true, false를 요구하는 문제였기 때문에 비교 결과를 return 하도록 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Python Study > 코드파이트_Intro 문제' 카테고리의 다른 글

Codesignal Intro 문제 풀이 (4~5)  (0) 2020.01.24