240413_TIL

J Lee·2024년 4월 13일
0

SQL 강의를 완강하고 파이썬 기초강의로 넘어왔다. SQL은 실무에서 활용하기 위해 따로 스터디도 했었고, 매일같이 쳐 왔던 쿼리가 익숙하기도 해서 수업을 따라가거나 코드카타를 푸는 데 크게 어려움이 없었다.

반면 파이썬은 이름만 무수히 들어봤지 실제로 코드를 쳐서 결과를 얻어 본 건 처음이었는데, SQL과 많이 다르지만 이건 또 이 나름의 재미가 있었다. 기초 문법 중 실제 알고리즘을 풀었던 사례만 몇 개 복습해 보면,

1. 리스트에서 짝수의 개수 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for 문을 쓰는 수업에서 나왔던 연습문제인 만큼 for를 써서 해결하는 버전으로 짜 보면,

count=0
for even in num_list:
    if even % 2 == 0:
        count += 1
print(count)

이렇게 된다.

  • num_list라는 리스트의 값을 앞에서부터 불러올 건데,
  • 이들 중 2로 나누었을 때 나머지가 0인 값들(즉, 짝수)이 나올 때마다
  • 0부터 시작하는 count라는 값에 1씩 더해가라

라는 뜻이 된다. 여기서 += 기호를 쓰면 왼쪽 변수(즉, 0부터 시작하는 count)에 오른쪽 변수(1)를 더하고, 그 결과를 다시 왼쪽 변수(count)에 할당한다는 의미 다.

2. 리스트에서 가장 큰 값 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

정말 간단하게 풀려면

result = max(num_list)
print(result)

이렇게만 해도 되겠지만, 역시 for 반복문의 성질을 이용해 풀어보면

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0
for num in num_list:
    if max < num:
        max = num
print(max)

이렇게 for와 if 구문의 조합으로 해결할 수 있다.

  • num_list에 있는 값들을 앞에서부터 하나씩 불러올 건데,
  • 만약 max보다 num이 크다면
  • 오른쪽 변수(num)에 있는 값을 왼쪽 변수(max)로 할당한다

라는 뜻이 된다. max가 0이고 num이 1이면 max < num이 성립하므로 max는 1이 되고, 다음 번 num은 2니까 역시 max < num이 성립한다. 따라서 max는 2가 된다. 이 과정을 리스트가 끝날 때까지 반복할 것이므로, 결국 출력되는 값은 리스트에 있는 것들 중 가장 큰 값이 된다.

3. 주민번호를 입력하면 성별을 출력해주는 함수 만들기

def check_gender(pin):
    num = pin.split('-')[1][:1]
    if int(num) % 2 == 0:
        print('여성')
    else:
        print('남성')

check_gender('150101-2012345')

함수는 반복적으로 사용할 코드에 이름을 붙여놓은 것. 이 문제의 경우 주민등록번호는 사람마다 계속 바뀔 것이고 성별을 식별하는 작업이 반복되므로 check_gender라는 함수를 먼저 정의(def)했다.

그리고 변수로 입력될 pin에 대해,

  • 하이픈(-)을 기준으로 split한 뒤
  • 0번(생년월일)이 아닌 1번 값을 불러오고([1])
  • 그 1번 값 중에서 제일 앞자리만 불러온다([:1])
  • 그 결과를 num이라고 한다

이 결과로 출력된 num으로 성별을 식별할 수 있긴 하지만, if 연산을 통해 성별을 print하려면 문자로 출력된 num을 숫자로 바꿔줘야 한다. 따라서 if 구문 안에서는 int로 num을 감싸고 2로 나눠서 홀짝 여부를 판별한 뒤에 그걸 기준으로 '남성', '여성' 등의 값을 출력하게 된다. 파이썬에서는 통상적으로 쓰는 =을 표현하기 위해 ==을 쓰는 것도 아직 익숙하지 않아서 헷갈리긴 하지만 기억해놔야 할 점.

내일부터는 SQL외에 알고리즘 코드카타도 하나씩 풀어보면서 풀이과정을 TIL로 옮겨둘 예정. SQL만큼이나 알고리즘만의 재미도 얼른 실감해 보고 싶다.

profile
기본기를 소홀히 하지 말자

0개의 댓글

관련 채용 정보