본문 바로가기
코딩테스트/프로그래머스

[기초 Lv.0-Python] 코딩 기초 트레이닝 Day2 - 출력, 연산

by 요호유후 2025. 2. 7.
반응형

▶ 문제1 - 덧셈식 출력하기

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181947

▶ 풀이

num1, num2 = map(int, input().split(' '))
print(f'{num1} + {num2} = {num1 + num2}')
★ 풀이노트
   [line 1]
    · input() : 정수입력
    · split(' ') : 2개의 정수를 한 번에 받은 후 ' '(공백) 기준으로 잘라 각각의 변수에 나누어 담음
    · map(int, ~) : input() 함수는 문자열을 반환하므로, 각 변수를 int형으로 변환해준다.
 
   [line 2]
    · f-string 포매팅 : 덧셈 전체 식을 출력해야 하기에 f-string 활용하여 출력
                                 변수를 {}(중괄호)로 감싸주면, 해당 변수의 값을 출력해준다.

 


▶ 문제2 - 문자열 붙여서 출력하기

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181946

▶ 풀이

str1, str2 = input().split(' ')
print(str1 + str2)
★ 풀이노트
   [line 1]
    · input() : 문자열 입력
    · split(' ') : 2개의 문자열을 한 번에 받은 후 ' '(공백) 기준으로 잘라 각각의 변수에 나누어 담음
   
    · line 3 : '문자열 + 문자열'로 문자열을 결합하여 출력

 

▣ 다른 사람 풀이

print(''.join(input().split(' ')))
★ 풀이노트
    · '구분자'.join(리스트) : 리스트 값 사이사이에 구분자를 넣은 후 문자열을 하나로 합쳐준다.
                                         구분자는 default로 '' 이다.
      예) '_'.join(['a', 'b', 'c']) → 출력 : "a_b_c"  

 


▶ 문제3 - 문자열 돌리기

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181945

▶ 풀이

for txt in input():
    print(txt, end="\n")
★ 풀이노트
    · line 1 : input() 으로 받은 문자열을 하나씩 변수 txt에 담는다. 
    · line 2 : 변수 txt의 값을 하나씩 출력한다. 생각해보면 end="\n"은 생략해도 된다. end 옵션 기본이 "\n"이다.

 

▣ 다른 사람 풀이

print("\n".join(input()))
★ 풀이노트
    · '구분자'.join(리스트) : 리스트 값 사이사이에 구분자를 넣은 후 문자열을 하나로 합쳐준다.
       입력문자 사이에 "\n" 구분자를 넣어 출력되도록 한다. 
  
🫠🫠
뭔가 멋있게 풀어보고 싶어서 나름 짱구 굴려보다가 그냥 정석대로 풀었는데... 
이 풀이보자마자 헛웃음이 나왔다ㅋㅋㅋㅋ
심지어 바로 위의 문제 2번에서 정리해놓고는... 갑자기 나 자신이 싫어진다 

 


▶ 문제4 - 홀짝 구분하기

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181944

 풀이

num = int(input())

if num % 2 == 0:
    print(f'{num} is even')
else:
    print(f'{num} is odd')
★ 풀이노트
    · line 1 : input() 으로 값을 입력 받고 int()로 형 변환 해준다. (왜냐? input()은 문자열로 반환하기 때.문.)
    · line 3~6 : x % y 는 x를 y로 나누었을 때 나머지를 반환한다.
                        즉, 변수 num을 정수 2로 나누었을 때 나머지가 0 이면? = 짝수, 그렇지 않으면 홀수이다. 

 


▶ 문제5 - 문자열 겹쳐쓰기

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181943

풀이1 (오답....)

def solution(my_string, overwrite_string, s):
    my_string = my_string.replace(my_string[s:s+len(overwrite_string)], overwrite_string)
    return my_string
★ 풀이노트
    · line 2 : my_string의 문자를 변경해주기 위해 replace() 메서드를 사용했다.
                   my_string의 인덱스 s 위치부터 변수 overwrite_string의 길이만큼에 해당하는 부분을
                     → my_string[s:s+len(overwrite_string)]으로 표현
                   overwrite_string으로 바꾼다.

🙅‍♂️🙅‍♂️
Lv.0 문제를 틀리다니... 나름 오? 빡센걸? 하지만 이정도야 뭐 하면서 풀었는데.....
엥??? 그래서 제한사항을 맞춰줘야 하나 하고 아래와 같이 조건을 달아줘봤는데
(제한사항 안 맞춰줘도 된다고 했던거 같은데...)

 풀이2 (오답....)

def solution(my_string, overwrite_string, s):
    if s+len(overwrite_string) > len(my_string):
        my_string = my_string.replace(my_string[s:], overwrite_string)
    else:
        my_string = my_string.replace(my_string[s:s+len(overwrite_string)], overwrite_string)
    
    return my_string
★ 풀이노트
    · line 2~5 : 혹시나 인덱스 초과하는 경우가 있을까 싶어 조건문을 달아봤다.

🤷‍♂️🤷‍♂️
뭘 놓친걸까... 동일하게 테스트6에서만 실패했다.

 풀이3 (3트만에 성공)

def solution(my_string, overwrite_string, s):
    return my_string[:s] + overwrite_string + my_string[s+len(overwrite_string):]
★ 풀이노트
    · 문자열 슬라이싱을 사용했다.
    · my_string[:s] : my_string 인덱스 s 까지 끊는다.
    · + overwrite_string
       : 인덱스 s 위치부터 overwrite_string 길이만큼 overwrite_string으로 치환하는거니까 그대로 더한다.
    · + my_string(s+len(overwirte_string):] 
       : 인덱스 s 부터 마지막 문자까지 치환하는것 같긴한데 혹시 모르니까 치환 이후의 문자열도 출력되게끔 했다.
 
🤦‍♀️🤦‍♀️
도대체가 모르겠어서 하단에 질문하기 버튼이 있길래 눌러서 들어가봤다.
나같은 사람이 천짛ㅎㅎ 역시 세상은 따뜻해! 여기서 힌트를 얻었다. (힌트만!)
중복문자열에 대한 처리!
예를 들어 입력이 ("aaaaaa", "bbb", 3)와 같을 경우, 출력이 "bbbbbb"으로 나올 수가 있다.
아마 테스트6번이 중복문자열 처리인가보다.
이것을 해결하기 위해서는 replace()를 과감히 버려야했다. 아주 단순하게 처리가 가능하더라고잉

 

 


 

😆 새로 알게 된 것들 😆

1. '구분자'.join(리스트) 기억하자!! (문제2, 3)
2. 문자열 처리 시 항상 중복문자열에 대해서 염두에 두자! (문제5)

 

글을 정리하며...

Lv.0 문제 틀렸으니 오늘은 이만 요양해야겠다...

Lv.0이 내가 생각한 Lv.0이 아닌 것 같다.

파이썬을 마스터한 자를 Lv.0이라 하는 것 같다.

Lv.1은 파이썬 대장

Lv.2는 파이썬 천재

Lv.3은 파이썬 신?.... 

Lv.4, 5는 파이썬 킹 갓 제너럴.... 이만 요양해야겠다.

 

 

반응형

댓글