열심히 해야하는데...
쉽지 않다.
프로그래밍 언어도 영어공부처럼 잠깐 쉬면 그새 까먹는 것 같다.
학습량이 적더라도 지속적으로 하는 것이 중요하다는 생각이 든다.
그러니 포기하지 말고 이어서 시작!
4주차 공부 기록
저번에 이어서 39번부터 차근차근 문제를 확인하며 내가 메모하고 싶은 문제들만 정리해보았다.
==========================================================================================
문제 39번.
문제를 딱 보자마자 replaceall이 떠올랐는데, python에서는 어떤 메소드를 사용하는지 가물가물했다.
**********************************
1. 기본적인 방법 (메서드 체인)
data = input()
data.replace('q', 'e').replace('b','n')
2. 정규표현식 사용 (sub 메소드로 대체)
import re
data = re.sub('q', 'e', data)
# print(re.sub('b', 'n', data))
==========================================================================================
문제 40번.
제한무게 = int(input('제한 무게를 입력해주세요.'))
친구수 = int(input('총 친구의 수를 입력해주세요.'))
친구들몸무게 = []
x = 0
for i in range(친구수):
친구들몸무게.append(int(input('몸무게 입력해주세요.')))
for i in range(len(친구들몸무게)):
x += 친구들몸무게[i]
if x > 제한무게:
print('{}명까지 탑승할 수 있습니다.'.format(i))
break
어떤 방식으로 접근해야하나 고민이 됐었는데
친구들 몸무게를 리스트에 받아준 뒤 순서대로 하나씩 더해나가다가,
조건문에 해당될 때 멈춰서 명수를 체크하는 방법으로 풀어나가는 것을 보고..
너무 어렵게 고민했다는 생각이 들었다.
처음부터 완벽한 방법을 생각해내려고 했던 접근이 좀 아쉬웠다.
==========================================================================================
문제 41번.
소수의 정의가 무엇인지부터 생각해서 접근해야하는 문제다.
소수는 나누었을 때 나머지가 0이 될 때가 "1과 자기 자신"일 때만 있어야 한다.
# 1. 내가 혼자 구현해본 방법
입력값 = int(input('값을 입력해주세요.'))
count = 2
Flag = True
if 입력값 <= 1:
print("NO")
while count < 입력값:
if 입력값 % count == 0:
Flag = False
print('NO')
break
count += 1
if Flag:
print('YES')
===================================================
# 2. 강의에서 알려준 방법
x = int(input())
for i in range(x):
if x <=1:
print('소수가 아닙니다.')
elif x == 2:
print('소수입니다.')
break
elif x % i == 0:
print('소수가 아닙니다.')
break
else:
print('소수입니다.')
---> 이 경우에는 진짜 각각 조건의 경우를 나눠서 하는 방법임
===================================================
# 3. 함수로 만들기
def check_prime(n):
if n <= 1:
return "NO"
i = 2
소수 = True
while (i**2) < n:
if n % i == 0:
소수 = False
break
i += 1
if 소수:
return "YES"
else:
return "NO"
내가 혼자 짜본 방법은 강의에서 함수로 비슷하게 구현하였다.
아주 기초적인 문제긴 하지만, 혼자 생각해냈다는 데 의의를 두고 뿌듯했다. 😍
==========================================================================================
문제 42번.
datetime 모듈을 사용하는 문제
# datetime 메소드
# datetime.datetime (datetime 모듈에서 datetime 객체를 생성)
# datetime.datetime.time() (datetime 객체에서 시간 속성만 뽑겠다)
import datetime
def findDay(a, b):
day = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
# weekday() : 요일 반환 , {월:0, 화:1, 수:2, 목:3, 금:4, 토:5, 일:6}
return day[datetime.date(2024, a, b).weekday()]
# 실제 함수 적용
m, d = map(int, input().split())
print(findDay(m, d))
==================================================================
# 2. 리스트 대신 strftime() 메소드 사용
def findDay2(a, b):
# weekday() : 요일 반환 , {월:0, 화:1, 수:2, 목:3, 금:4, 토:5, 일:6}
day = datetime.date(2024, a, b)
# strftime() 은 weekday대신 바로 전환해줌 ('%Y': 4자리 연도, '%m' : 2자리 월, '%d' : 2자리 일, '%H' : 2자리 시간, ...)
return day.strftime('%A')
m, d = map(int, input().split())
print(findDay2(m, d))
==========================================================================================
문제 43번.
# 1. bin 메소드 사용
bin(13)
# 2. 나누기로 직접 계산
a = int(input())
b = []
while a : # a가 2 미만이 되면 int(a//2)가 0이 되면서 false==0가 됨
print(a)
# b에는 나머지 (0or1) 순서대로 저장
b.append(str(a%2))
# a 는 몫을 다시 대입
a = int(a//2)
# 뒷자리부터 순서대로 리스트에 들어가있으므로 reverse 해줘야 함
print(b.reverse())
# 이진수로 리스트 값을 붙여서 표현
print(''.join(b))
# 문제 44 (각 자리수의 합)
data = input()
s = 0
for i in data:
s += int(i)
print(s)
==========================================================================================
문제 44번.
data = input()
s = 0
for i in data:
s += int(i)
print(s)
# 문제 45 (현재 년도 초 단위로 계산)
import time
# 현재 시간을 초 단위로 나타내줌 (1970년 0시 0분 기준으로부터 얼마나 흘렀는지)
t = time.time()
# 1년을 초단위로 계산해서 나눠주면 몇년이 흘렀는지 계산 가능
t = t // (365*24*60*60) + 1970
print(int(t))
==========================================================================================
문제 50번.
버블정렬 문제..
정보처리기사에서 다 짜여져있는 코드를 출력값만 구하는 연습은 몇번 해본적이 있어서 익숙했지만,
막상 내가 처음부터 안 보고 짜보려고 하니
머리가 멈췄다.
친절한 강사님이 빈칸만 뚫린 문제를 주셔서..
그나마 수월했다.
def bubble(n, data):
for i in range(n-1):
for j in range(n-i-1):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
for i in range(n):
print(data[i], end=" ")
n = int(input())
data = list(map(int, input().split()))
print(bubble(n,data))
=========================================================================================
점점 난도가 올라가고 있는 느낌이 든다.
이제 강의 해설을 봐야 짤 수 있는 문제들이 조금씩 늘어나고 있다.
<해당 강의 링크>
'위니브 엠버서더' 카테고리의 다른 글
[위니브 엠버서더 3기] 파이썬 코딩테스트 기초 입문 강의 5주차 도전 (2) | 2024.08.27 |
---|---|
[위니브 엠버서더 3기] Python 엑셀 프로그래밍 - with xlsxwriter 수강 후기 (0) | 2024.08.23 |
[위니브 엠버서더 3기] 아주 쉽다 클라우드! AWS Lightsail 자습서! 인프런 클라우드 강의 수강 후기 (13) | 2024.07.30 |
[위니브 엠버서더 3기] 비전공자 파이썬 코테 입문 3주차 (0) | 2024.07.01 |
[위니브 엠버서더 3기] IT 분야를 잘 모르는 비전공자가 들으면 좋은 MBIT 강의 수강 후기 (0) | 2024.07.01 |