level 2. 이상한 문자 만들기

|

level 2. 이상한 문자 만들기

출처

문제

toWeirdCase함수는 문자열 s를 매개변수로 입력받습니다. 문자열 s에 각 단어의 짝수번째 인덱스 문자는 대문자로, 홀수번째 인덱스 문자는 소문자로 바꾼 문자열을 리턴하도록 함수를 완성하세요. 예를 들어 s가 “try hello world”라면 첫 번째 단어는 “TrY”, 두 번째 단어는 “HeLlO”, 세 번째 단어는 “WoRlD”로 바꿔 “TrY HeLlO WoRlD”를 리턴하면 됩니다.

주의 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단합니다.

풀이 (python)

1

map을 활용해서 풀었다.

def toWeirdCase(s):
    def change(t):
        result = ""
        for i, v in enumerate(t):
            if i % 2:  # 홀수
                result += v.lower()
            else:  # 짝수
                result += v.upper()
        return result
    return ' '.join(list(map(change, s.split())))


# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(toWeirdCase("try hello world")));

2

def toWeirdCase(s):    
	s = s.split()
	i = 0
	j = 0
	while i < len(s):
		for j, v in enumerate(s[i]):
			if j % 2 == 1:
				s[i] = s[i][:j] + s[i][j:].replace(v, v.lower(), 1)
			else:
				s[i] = s[i][:j] + s[i][j:].replace(v, v.upper(), 1)
		i += 1       
	return ' '.join(s)


# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(toWeirdCase("try hello world")));

다른사람 풀이

def toWeirdCase(s):    
  return ' '.join(''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split())

배운점

  • 문자열은 인덱스를 통해서 문자열 일부를 수정 교체 할 수 없다.
  • 문자열을 수정하려면 replace를 하거나, + 연산자를 사용해야 한다.
  • 3항 연산자를 잘 활용하자 A if 조건 else B

level 2. 자연수를 뒤집어 리스트로 만들기

|

level 2. 자연수를 뒤집어 리스트로 만들기

출처

문제

digit_reverse함수는 양의 정수 n을 매개변수로 입력받습니다. n을 뒤집어 숫자 하나하나를 list로 표현해주세요 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴하면 됩니다.

풀이 (python)

def digit_reverse(n):
    list = [int(i) for i in str(n)]
    list.reverse()
    return list

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(digit_reverse(12345)));

다른사람 풀이

# 풀이1
def digit_reverse(n):
    return [int(i) for i in str(n)][::-1]

# 풀이2
def digit_reverse(n):
    return list(map(int, reversed(str(n))))    

배운점

  • .reverse() 메소드를 통해서 리스트 요소의 순서를 뒤집을 수 있다. 하지만 결과값을 리턴하지는 않는다.
  • map(function, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소가 함수 f에 의해 수행된 결과를 묶어서 리턴한다.
  • reversed() 함수를 통해 리스트 요소의 순서를 뒤집은 객체를 리턴한다.

level 2. JadenCase 문자열 만들기

|

level 2. JadenCase 문자열 만들기

출처

문제

Jaden_Case함수는 문자열 s을 매개변수로 입력받습니다. s에 모든 단어의 첫 알파벳이 대문자이고, 그 외의 알파벳은 소문자인 문자열을 리턴하도록 함수를 완성하세요 예를들어 s가 “3people unFollowed me for the last week”라면 “3people Unfollowed Me For The Last Week”를 리턴하면 됩니다.

풀이 (python)

def Jaden_Case(s):
    s = s.lower()
	list_s = s.split()
	list_s = [i.replace(i[0], i[0].upper(), 1) for i in list_s]
	return ' '.join(list_s)

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(Jaden_Case("3people unFollowed me for the last week"))

다른사람 풀이

def Jaden_Case(s):
    return s.title()

배운점

  • String.split() 을 통해서 문자열을 리스트로 바꾼다.
  • ’ ‘.join(List) 를 통해서 리스트를 문자열로 바꾼다.
  • String.replace(old, new, 숫자) 를 통해서 문자열 안의 값을 바꿀 수 있다. 숫자 조건을 입력하면 그 숫자 만큼만 변경한다.
  • String.title() 을 통해서 문자열 각단어의 첫 글자를 대문자로 바꾼다.

level 2. 하샤드 수

|

level 2. 하샤드 수

출처

문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.

Harshad함수는 양의 정수 n을 매개변수로 입력받습니다. 이 n이 하샤드수인지 아닌지 판단하는 함수를 완성하세요. 예를들어 n이 10, 12, 18이면 True를 리턴 11, 13이면 False를 리턴하면 됩니다.

풀이 (python)

def Harshad(n):
	sum = 0
	for i in str(n):
		sum = int(i) + sum
	return False if n % sum else True


# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(Harshad(18))

다른사람 풀이

def Harshad(n):
    return n % sum(int(x) for x in str(n)) == 0

배운점

  • int() 내장함수를 통해 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수 형태로 리턴한다.
  • sum() 내장함수를 통해 매개변수의 합을 구할 수 있다.

level 2. 요일 구하기

|

level 2. 요일 구하기

출처

문제

2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각

SUN,MON,TUE,WED,THU,FRI,SAT

를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.

풀이 (python)

import datetime
def getDayName(a,b):
	return ['MON','TUE','WED','THU','FRI','SAT','SUN'][datetime.date(2016, a, b).weekday()]
#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))

배운점

  • datetime 모듈의 weekday() 메소드를 통해서 특정일의 요일을 구할 수 있다. 가이드문서