오늘 한 일 

최호성님 독하게 시작하는 C 프로그래밍에서 메모리와 포인터 부분을 예제를 풀고 책도 읽었다. 

디버깅할때 메모리 창 들여다보는게 이제는 익숙해졌다. 

 

다시 체계적으로 배우는 C언어 포인터 도서가 이제는 재미있는(?)지경에 이르렀다. 

고통스럽기도 어렵기도 밉기도(?)하다. 

어려운 것을 반복해서 읽고 도전하니까 그나마 나아지는 것을 느끼는 것이 재미있다. 

 

만화로 쉽게 배우는 CPU 도서는 3분의 2정도 읽었으니, 이제 끝이 보인다. 

 

생각거리 

오늘은 문제를 못풀었다. 

 

도서관에 가서 공부하다가, 책가방 서비스를 신청한 도서가 도착했다는 문자를 받아서 반가운 김에 급.. 책 읽기를 시작했다.

'이제야 언니에게' 를 읽고 감정에 빠져있느라 공부시간 중 3시간을 책에 썼다. 

단숨에 읽었다.

후회되지는 않지만, 아무래도 소설책은 주말에 읽는 것이 좋은 것 같다! 

 

계획은 지키라고 있는 거니까. 앞으로는 잘 지키도록 노력하기! :)

 

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-02-10 TIL  (0) 2020.02.10
2020-02-07 TIL  (0) 2020.02.07
2020-02-05 TIL  (0) 2020.02.05
2020-02-04 TIL  (0) 2020.02.04
2020-02-03 TIL  (0) 2020.02.03

오늘 한일 

 

다시 체계적으로 배우는 C언어 포인터 (정재은 저) 의 2차원 배열과 포인터 부분을 2번 읽었다. 

중요한 부분은 따라 그려보며 이해하려고 노력했다. 

시간을 들인 만큼 보람있었다. 

 

만화로 쉽게 배우는 CPU 라는 책을 가벼운 마음으로 반정도 읽었다. 

뇌를 자극하는 윈도우 시스템 프로그래밍 책을 본격적으로 읽기 전에 가볍게 읽으려고 빌렸다. 

조금 오그라는 부분도 있어서 피식 웃음이 났다.

 

포인터 때문에 끙.. 했는데 리프레시 했다. 

 

프로그래머스에서 풀던 문제를 아직 완성을 못했다. 

어느 부분이 테스트케이스를 만족시키지 못하는 것인지... 답답하다. 

소수 찾기 문제도 테스트케이스 12개 중에 3개를 통과 못해서 실패했다. 

 

생각거리

1년 동안 파이썬을 쓰면서 좀 더 근본적인 것에 대한 갈증(..?) 이 있었던 것 같다. 

C, C++, 자료구조, 알고리즘을 연습하면서 기본기를 다지는 시간에 충실해야겠다. 

나에겐 지금 이것들이 우선으로 필요하다.

 

그래야 나중에 필요하다면 파이썬도 잘 습득할 수 있을 것 같다. 

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-02-07 TIL  (0) 2020.02.07
2020-02-06 TIL  (0) 2020.02.06
2020-02-04 TIL  (0) 2020.02.04
2020-02-03 TIL  (0) 2020.02.03
2019-11-01 TIL python dataframe 2개 이상 컬럼으로 조인  (0) 2019.11.01

오늘 한일 

 

최호성님 독하게C 강의 메모리와 포인터 부분 강의를 듣고 정리했다. 

 

프로그래머스 '스킬트리' 문제를 30분 안에 못풀었다. 

아쉽다.  테스트 케이스 50%를 통과 못한 이유가 뭔지 내일 생각해야겠다. 

 

C언어 포인터 도서를 읽었다. 

2차원 포인터에서 예제를 풀었는데, 배열명은 주소상수여서 배열명에는 주소를 할당할 수 없다는 점을 자꾸 잊어서 예제를 틀리는 나를 발견했다. 

배열명의 주소는 바꿀 수 없다! 

포인터는 '변수'이므로 주소를 바꿀 수 있음을 기억하자. 

*이 붙으면 '대상체'를 가리키는 것이다. 

포인터가 같은 주소값을 가지고 있다고 하더라도, 가리키는 '대상체'가 다르면 두 포인터는 다른 포인터다.

같은 주소값을 가지고 있는 포인터라도, 하나는 2차원 배열 전체를 가리킬 수 있고, 하나는 두번째 '행'을 대표하는 포인터일 수 있다. 

 

(어려웠던 부분)

배열이 int imsi[3][2]; 있다고 할 때, 

*imsi는 *(imsi+0) 과 같다. 

imsi에서 0번째 떨어진 곳의 대상체는 imsi[0]이다. 하나의 행은 2개의 int 요소로 구성되므로, sizeof(*imsi)는 8bytes이다. 

 

배열 imsi가 위와 같다고 할 때, 

imsi + 0과 *(imsi + 0)은 다르다. 

imsi+0은 배열명이 주소이므로, 단지 주소라서 4bytes이다. 

*(imsi+0)은 imsi[0]을 뜻하므로, 한 '행'이 대상이다. 그래서 8bytes이다. 

 

 

포인터변수는 '주소'를 저장하기 때문에 크기는 무조건 4bytes이다.

 

2년 전에 읽다가 그만 두었는데, 다시 읽으니까 그나마 덜 어렵게 느껴졌다. 이대로 쭈욱 완독하자!


생각거리 

최호성님 독하게C 인프런 강의를 반정도 수강해서, 책을 구매했다. 

예제를 빠짐없이 풀어보고 C에 대한 기본을 다져두고 싶다. 

그리고 나서 C++ 강좌를 듣고 코딩테스트 대비를 하려고 한다. 

차근차근 급하지 않게 공부해야겠다. 

 

갑자기 날이 많이 추워지고 눈도 왔다. 코로나도 추위도 이겨내면서 seize the day!

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-02-06 TIL  (0) 2020.02.06
2020-02-05 TIL  (0) 2020.02.05
2020-02-03 TIL  (0) 2020.02.03
2019-11-01 TIL python dataframe 2개 이상 컬럼으로 조인  (0) 2019.11.01
2019-10-08 TIL 파이썬 순열  (0) 2019.10.08

오늘 한일 

 

뇌를 자극하는 윈도우 시스템 프로그래밍 1장 내용을 공부했다. 

컴퓨터구조의 기본을 짚어보는 내용이었다. (CPU, 메모리, 버스 시스템의 역할과 구조)

 

최호성님의 독하게C 강의를 듣고 노트를 포스팅했다. 

 

깃허브를 새로 만들었다. (일일커밋을 도전 시작이다! 데일리 잔디심기 ㄱㄱ )

 

코딩테스트 연습을 위해 프로그래머스 'K번째수' 문제를 python으로 풀어서 push 했다. 

 


생각거리 

 

코테 연습을 위해 프로그래머스, 백준 사이트를 이용한 생각이다. 

그런데 보통 답안을 C++, java로 채점해준다. 

C강의를 꼼꼼하게 듣고 예제를 풀어본 후 바로 C++강의를 듣고 코테 준비를 C++로 해야하는지 고민하고 있다. 

 

퇴사 후 첫 월요일을 맞았다. 

신종 코로나 바이러스가 기승을 부리고 있는 뒤숭숭한 요즘이지만, 첫 공부시간이 알차고 즐거웠다. 

아무쪼록 오늘도, 내일도 seize the day! 

 

 

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-02-05 TIL  (0) 2020.02.05
2020-02-04 TIL  (0) 2020.02.04
2019-11-01 TIL python dataframe 2개 이상 컬럼으로 조인  (0) 2019.11.01
2019-10-08 TIL 파이썬 순열  (0) 2019.10.08
2019-10-07 TIL 데이터프레임 중복 제거  (0) 2019.10.07

https://blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221535156243

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-02-04 TIL  (0) 2020.02.04
2020-02-03 TIL  (0) 2020.02.03
2019-10-08 TIL 파이썬 순열  (0) 2019.10.08
2019-10-07 TIL 데이터프레임 중복 제거  (0) 2019.10.07
2019-09-30 TIL 파이썬을 파이썬답게  (0) 2019.09.30

파이썬은 for문 없이 순열을 구할 수 있다. 

 

import itertools

pool = ['A', 'B', 'C']

print(list(map(''.join, itertools.permutations(pool))))
print(list(map(''.join, itertools.permutations(pool, 2))))

itertools를 import 하여 for문을 사용하지 않고도 순열을 구할 수 있다. 

728x90

 

쿼리에서 조건을 줘서 걸러내는 작업을 줄이고, 데이터를 가져오는 기준이 변경되면서

이전에 쿼리에서 하던 '데이터에서 중복을 제거하는 것'을 파이썬으로 처리하게 되었다. 

 

업무에서 시험하는 데이터가 많다 보니, 어떤 데이터가 중복되었는지 찾아내는 것 조차 어렵다. 

(작게는 5만건, 많게는 200만건.. )

한 번 시험할 때 확인해야 할 양이 많다. 

 

이유는 모르겠지만.. 중복 데이터가 4개 정도 더 발생되는게 문제였다. 

디버깅 하며 어디서 불필요한 데이터가 남아있는지 찾아냈다. 

 

쿼리가 해결해주지 못한 부분이 어디인지 찾아내는 과정이 답답했다. 왜냐하면 데이터가 많으니깐 시간이 오래걸렸기 때문이다. 

 

해결한 내용

 

데이터프레임 끼리 merge를 진행 한 후에, 중복을 제거하고 인덱스를 다시 붙였다. 

drop_duplicates 를 진행할 때, 어떤 칼럼(들)을 기준으로 중복을 제거할 지 설정했더니 중복제거가 원하는 대로 됬다!

참고한 포스팅  https://nittaku.tistory.com/124

 

데이터프레임을 추출, 병합, 조인한 후에 데이터프레임의 길이와 내용을 잘 확인하자는 교훈(?)을 얻었다. 

 

 

 

728x90

리스트 원소들의 길이를 전부 알고 싶을 때 

 

inpl = [[1, 2], [3, 4], [5]]

def solution(mylist):
    answer = list(map(len, mylist))
    return answer

print(solution(inpl))

실행 결과

 

Iterable의 모든 멤버의 type을 변환

def solution(mylist):
    mylist = list(map(int, mylist))
    return mylist


mylist = ['1', '100', '33']

print(solution(mylist))

실행 결과

['1', '100', '33'] -> [1, 100, 33]

문자 타입이 숫자 타입으로 변경되었다. 

 

 

 

sequence 멤버를 하나로 이어붙이기

ml = ['11', '22', '333']

def solution(mylist):
    answer = ''.join(mylist)
    return answer

print(solution(ml))

실행 결과

 

728x90

파이썬 행과 열 뒤집기 

 

mylist = [[1,2,3], [4,5,6], [7,8,9]]

# 0,0  1,0,  2,0
# 0,1  1,1,  2,1
lenl = len(mylist)

answer = list()
for col in range(len(mylist)):
    tlist = list()
    for ii in range(len(mylist[0])):
        tlist.append(mylist[ii][col])
    print(tlist)
    answer.append(tlist)

print(answer)

 

 

zip unpacking을 이용하면 코드 한줄로 리스트를 뒤집을 수 있습니다.

zip(*iterables)는 각 iterables의 요소들을 모으는 이터레이터를 만듭니다.
튜플의 이터레이터를 돌려주는데, i번째 튜플은 각 인자로 전달된 시퀀스나 이터러블의 i번째 요소를 포함합니다.

 

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))

 

실행 결과

 

728x90

간격을 지정하고 문자열을 정렬할 수 있다. 

 

s = 'cba'
n = 7

print(s.ljust(n))
print(s.center(n))
print(s.rjust(n))

 

 

모든 알파벳

숫자 0을 입력하면, 영문 소문자 알파벳 숫자 1을 입력하면, 영문 대문자 알파벳을 사전 순으로 출력

 

flag = 0
if flag == 0:
    s = s.lower()
else:
    s = s.upper()

ls = list(s)
ls = sorted(ls)
print(sorted(ls))

s = ''.join(ls)

print(s)

 

파이썬에서 모든 알파벳, 숫자들이 미리 정의되어 있다. 


알파벳 출력하기 

import string  

string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz 
string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ 
string.ascii_letters #대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 
string.digits # 숫자 0123456789

 

728x90

+ Recent posts