파이썬/코딩테스트

Day4. 코딩 기초 트레이닝 프로그래머스 파이썬

해봄544 2024. 1. 13. 23:34

1. n의 배수

def solution (num,n):
    answer = 0
    if num % n == 0:
       answer = 1
    else:
       answer =0
   return answer

 

2. 공배수

def solution (number, n ,m):
    answer = 0
    if number % n ==0 and number % m ==0:
       answer = 1
    else:
         answer = 0
    return answer

 

3. 홀짝에 따라 다른 값 반환하기

def solution(n):
    answer = 0
    if n % 2 ==0:
       answer = sum(i**2 for i in range(2,n+1,2))
    else:
       answer = sum(range(1,n+1,2))
    return answer

 

4.  조건 문자열 

 

 

def solution (ineq, eq, n, m):
     answer =0
     if ( ineq == "<" and eq == "=" and n<=m) or \
     (ineq == "<" and eq == "!" and n<m) or \
     (ineq  ==">" and eq == "=" and n>=m) or \
     (ineq == ">" and eq == "!" and n>m):
        answer = 1
     else:
         answer =0
         
     return answer

 

더보기

다른 사람 풀이

 

def solution(ineq, eq, n, m):
     return(int(eval(str(n)+ineq+eq.replace("!","")+str(m)))

 1. eq.replace("!",""): 등식 'eq'에서 "!"를 제거한다. 이는 !가 등식에 사용된 경우에 해당한다.
 2. str(n) +ineq + eq.replace("!","")+str(m):  주어진 두 수와 부등식, 등식을 문자열로 결합한다. ex) 5>!3
 3. eval( str(n) +ineq + eq.replace("!","")+str(m)) : 문자열로 표현된 수식을 eval 함수를 통해 계산한다. 
4. int(...): eval 함수를 통해 얻은 결과를 정수로 변환한다. 

더보기

 .replace() : 문자열에서 특정 부분을 다른 문자열로 대체하는 데 사용된다. 이 메서드는 원본 문자열을 변경하지 않고 새로운 문자열을 반환한다. ex) eq.replace(old_string, new_string) 

ex)

oringinal_string = "Hello, World!" 
      new_string =  oringinal_string.replace(Hello,Hi)

print(oringinal_string)="Hello,World!" 
print(new_string)= "Hi,World!"

 

eval(): 문자열로 표현된 파이썬 표현식을 실행하여 결과를 반환하는 내장함수다. 이 함수는 주어진 문자열을 파이썬 코드로 간주하고 해당 코드를 실행한다.

 ex)

x= 5 
ans =" x+2"
result = eval(ans)
print(result)

 

 

 

5.  flag에 따라 다른 값 반환하기

 

def solution (a,b,flag):
    answer = 0
    if flag:
       answer = a+b
    else:
        answer = a-b
    return answer

 

더보기

 처음 작성한 틀린 답

def solution(a, b, flag):
    answer = 0
    if flag == "true" :
        answer= a+b
    else:
        answer = a-b
    return answer

 이렇게 하니 true 값이 전부 실패가 나왔다.
불리언 값으로 주어진다는것은 파이썬에서는  1또는 0으로 답이 나온다는 뜻으로
"true"인 문자열과 "TRUE"인 불리언 값은 서로 다른 타입이다.
불리언 값과 문자열이 다르다는 것을 인지하지 못해 나온 오답이다.