오늘은 Access Control (접근 제한자)의 차이점을 비교해보기 위해, 간단한 Framework를 만들어보려 합니다. (Access Control 포스팅과 연관된 내용이니 함께 보시는걸 추천드립니다! ) 우선 Xcode를 열어 Framework 프로젝트를 생성해 주세요. 그 다음 AccessControl.swift 파일을 하나 생성 후 다음과 같은 여러 접근제한자를 갖는 class들을 만들어 줍니다. (저는 접근제한자를 테스트해보기 위해 이렇게 하는 것이지, 꼭 이렇게 작성 할 필요 없습니다.) 저장 후 종료합니다. 정말 별거 없죠? 이후 우리가 만든 프레임워크를 사용하기 위해 새로운 프로젝트를 하나 만들어 줍니다. 프로젝트 생성이 끝났으면, Add Files to "프로젝트명"~~ 을 눌러 아까..
오늘은 애플 개발자 문서를 활용하는 방법에 대해 정리해보려 합니다. ◎ 애플 개발자 문서를 읽어야 하는 이유 1. 애플에서 제공하는 문서인 만큼 그 내용이 정확합니다. 2. 새롭게 등장하는 기술에 대한 설명이 가장 먼저 반영됩니다. 3. 프레임워크와 클래스의 구동 방식을 이해하고 적절한 메서드/프로퍼티를 찾아 애플리케이션에 올바르게 적용할 수 있습니다. 4. 오류가 발생했을 때 적절한 해결방안을 찾을 수 있습니다. 5. 구글링 해서 쉽게 얻은 코드를 그대로 사용하거나 조금만 수정해서 사용하면 머리에 남는 것이 많이 없는 느낌입니다. 결국 온전히 자신의 힘으로 무언가를 만들거나 응용하기 어려워지는 거죠! (제 개인적인 생각) ◎ 애플 개발자 문서 구성 ◎ 애플 개발자 문서 읽는 법 애플 개발자 문서: de..
안녕하세요! 오늘은 README 작성 방법에 대해 알아볼까 합니다. 이 포스팅을 클릭하셨다는건, README.md가 뭔지 아시는 분들일 테니 README.md가 뭔지는 생략하겠습니다. 그래도 아쉬우니까.. ㅎㅎ 간단히 설명하자면 README는 해당 소프트웨어(프로그램)에 대한 정보(ex 사용법, 저작권, 프로젝트에 대한 설명 등)들을 기입해놓은 문서 파일이라고 생각하면 될 것 같습니다. README.md 파일의 작성은 MARKDOWN을 사용합니다. 확장자 md가 바로 이 MARKDOWN의 확장자 명이죠. 결국 오늘 설명 할 내용은 MARKDOWN 문법입니다. 작성하고자 하는 글씨 앞에 보라색 기호를 넣어 작성하면 됩니다. 1. 제목(글머리) 작성 # H1, 제목 ## H2, 부제목 ### H3, 소제목 ..
오늘은 딕셔너리에 대한 메소드를 정리해보려 합니다. 리스트, 튜플 딕셔너리로 변환 # 리스트 및 튜플 딕셔너리 변환 # 리스트 -> 딕셔너리 name_and_sex = [['LEE', 'M'], ['KIM', 'M'], ['RYU', 'F'], ['JEONG', 'F']] print(dict(name_and_sex)) #결과: {'LEE': 'M', 'KIM': 'M', 'RYU': 'F', 'JEONG': 'F'} # 튜플 -> 딕셔너리 name_and_sex = (('LEE', 'M'), ('KIM', 'M'), ('RYU', 'F'), ('JEONG', 'F')) print(dict(name_and_sex)) #결과: {'LEE': 'M', 'KIM': 'M', 'RYU': 'F', 'JEONG':..
오늘은 파이썬 집합의 함수 및 메소드에 대해 정리해보려 합니다! 집합은 중복을 허용하지 않기 때문에, 알고리즘 문제에서 리스트의 원소의 중복을 제거해야할 일이 있을때, 집합으로 타입을 변환해서 중복되는 원소를 제거한 후 다시 리스트로 타입변환을 해서 사용하는 경우가 많이 있습니다. 집합(Set)은 원소의 중복은 허용하지 않으면서 순서가 없는 자료형입니다. # 집합 test_set = set() # 공집합 선언시 test_set = {} 하면, 공집합이 아닌 딕셔너리를 생성하게 됩니다. test_set = {1,2,2,2,3,4,5} print(test_set) #결과: {1, 2, 3, 4, 5} -> 중복 허용 X 합집합 & 교집합 & 차집합 s1 = {1,2,3,4,5} s2 = {4,5,6,7,8}..
안녕하세요! 오늘은 문자열과 관련된 함수를 정리해 보려 합니다. 파이썬에서 문자열은 리스트와 마찬가지로 인덱싱 및 슬라이싱이 가능합니다. (파이썬은 다른 언어에 비해 문자열 처리가 상당히 편리한거 같아요.) # 인덱싱 & 슬라이싱 a = "Hello World!!" print(a[0], a[-1], a[7:11]) # 결과: H ! orld ● join() -문자열 삽입 # 문자열 삽입(join) join_str = ",".join('abcdef') print(join_str) # 결과: a,b,c,d,e,f ● strip() - 공백 지우기 # 왼쪽 공백 지우기(lstrip) test = " Hello World!! " print(test.lstrip()) # Hello World!! # 오른쪽 공백 ..
안녕하세요! 오늘은 파이썬 리스트와 관련된 함수를 정리해 보려 합니다. 알고리즘 문제 풀때 리스트를 조작하는 문제가 많이 나오기 때문에 이러한 함수들을 잘 숙지하고 계신다면 좋을 것 같습니다 :) 파이썬 리스트 자료형은 신기하게도(?) 다양한 자료형의 데이터를 원소로 가질 수 있습니다. 또 덧셈 및 곱셈등의 연산을 통해 쉽게 리스트를 조작 할 수 있습니다. len(list) - 리스트의 길이 반환 max(list) & min(list) - 리스트의 최대 & 최소 요소 반환 슬라이싱 - 리스트 원소들의 범위 지정 + 추가로 반복문과 리스트에서 자주 사용 되는 range() 함수 입니다. 다음과 같이 range()함수 외에 반복문을 통해서도 리스트를 만들 수 있습니다. enumerate함수는 다음과 같이 튜..
보통 코딩 테스트를 볼 때, 조금 난이도가 있는 문제는 알고리즘의 정확성 테스트뿐만이 아니라 효율성 테스트를 함께 검토하게 됩니다. 즉 알고리즘을 잘 구현해서 정답을 잘 맞춰도 효율이 좋지 못하면.. 효율성 테스트를 통과하지 못하게 되는데요. 이럴 경우, 정확성 부분에만 부분점수를 받을수도, 아예 점수를 받지 못할 수도 있습니다. 이 효율성테스트라는 것이 시간 복잡도를 의미합니다. 결국 이 알고리즘이 얼마나 문제를 빨리 풀어낼 수 있는지 체크하는 것이라 할 수 있습니다. 저 같은경우, 딱 문제를 보고 직관적으로 생각나는 방법으로 풀면 무조건 시간 복잡도가 O(n^2)이 나오더라구여 ㅜㅜㅜ 보통 효율성 테스트를 통과하기 위해서는 시간복잡도가 O(nlogn)이 되어야 하는 것 같습니다. 알고리즘을 처음 공부..
오랜만에 글 작성 하는것 같네요 ㅎㅎ.. 사실 머신러닝도 그렇고, iOS도 그렇고 욕심은 많아서 포스팅 하고 싶은 글들이 많은데.. 어쩌다보니 계속 미루게 되었네요. 다시 열심히 작성해 봐야겠습니다! 알고리즘 카테고리의 첫 포스팅인데, 앞으로 이 알고리즘 카테고리에 제가 푼 알고리즘 문제들을 올릴 것 같습니다. (알고리즘 실력이 너무 형편없어서 그냥 기록용으로 올릴 것 같습니다 ㅎㅎ..) 오늘은 알고리즘이 무엇인지와 순서도, 그리고 알고리즘 공부하기 좋은 사이트를 소개해드리려 합니다. 알고리즘 - 특정 문제를 해결하기 위해 논리적으로 기술해 놓은 일련의 명령문 프로그램 - 알고리즘을 컴퓨터가 이해하고 실행할 수 있는 특정 프로그래밍 언어로 표현한 것 순서도 - 미리 정의된 기호와 그것들을 서로 연결하는 ..
여태 모델을 학습시키고 학습 정도나 정확도등을 확인해볼 때, 조금 원시적인(?) 방법이라 할 수 있는 print로 출력해 왔었습니다. 이렇게 확인 해도 되겠지만, 더 좋은 그리고 더 쉽게 시각화하여 정보를 볼 수 있는 방법이 있습니다. 바로 텐서보드 인데요. 기존에 비용 함수를 프린트해가며 줄어드는 것을 확인했다면, 텐서보드를 이용해 아래와 같이 시각화 해서 확인해 볼 수 있습니다. 텐서보드를 사용하기 위해서는 시각화를 하고 싶은 변수에 대한 요약 정보를 저장하는 코드를 추가해줘야 합니다. 1. 로그를 확인하고 싶은 변수에 대한 요약정보를 저장하기 위한 코드 w2_hist = tf.summary.histogram("이름", 변수) # 히스토그램 cost_summ = tf.summary.scalar("이름..