전체 글(161)
-
[Swift 코테] 백준 10872 팩토리얼
팩토리얼 함수는 모든 양의 정수와 0에 대해 정의됩니다. 0! 의 값은 무엇이어야 할까요 ? 이는 1보다 크거나 같고 0보다 작거나 같은 모든 정수들의 곱입니다. 그렇지만 그런 정수는 존재하지 않습니다. 그러므로 0! 은 곱셈의 항등원인 1과 같다고 정의합니다. 에 주의해서 문제를 풀어야 합니다. 팩토리얼의 끝이 1이라고 생각해서 문제를 풀었더니 메모리 초과로 문제를 풀지 못했습니다. 0과 1의 메모리에서 어떤 차이가 있는지는 더 찾아봐야 겠습니다. //코드 import Foundation let input = Int(readLine()!)! func factorial(num: Int) -> Int{ if num == 0{ return 1 }else{ return num * factorial(num: n..
2022.04.26 -
[자료구조 - C언어] 자료구조 제2강: 문자열
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 문자열 문자열은 char 타입의 배열이 각 칸마다 문자 하나씩 저장되는 것 대부분의 라이브러리 함수들이 문자열을 다루는 경우 문자열의 끝에 null character가 저장되어 있다는 가정하에 동작한다. → null character(’\0’)는 문자열의 끝을 표시하는 역할 어디까지가 문자열이고 어디서부터가 무의미한 데이터인지 구분할 수 있는 방법이 없다. printf 함수 조차도 문자열 끝에 null이 없다면 동작하지 않음 문자열을 생성하는 방법 str[0] = ‘h’; 배열 각 칸에 char 저장하기 char str[] = “hello”; 컴파일러가 자동으로 문자열의 문자 개수를 카운트해서 크기가 6인 배열을..
2022.04.25 -
[Swift 코테] 백준 1002 터렛
중학교 수학을 코드로 푸는 느낌이다. //코드 import Foundation var time = Int(readLine()!)! for i in 0.. r1 + r2{ print("0") }else if (r1 > r2 && d + r2 r1 && d + r1 < r2){ print("0") } else if d == r1 + r2 || (d + r1 == r2) || (d + r2 == r1){ print("1") }else{ print("2") } }
2022.04.25 -
[Swift 코테] 백준 3053 택시 기하학
출력 형식의 문제인가 싶었는데 원주율의 문제였습니다. 원주율 -> 3.141592653 로 표현하지 말고 원주율 -> Double.pi 사용하기 //코드 import Foundation let r = Float64(readLine()!)! var u = Double.pi * r * r var t = r * r * 2 print(u) print(t)
2022.04.25 -
[자료구조 - C언어] 자료구조 제1강: 동적메모리할당
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 동적 메모리 할당 일반적으로 데이터를 저장할 메모리 공간을 확보하는 방법 데이터를 저장할 변수를 선언하고 그 변수에 저장 그렇다면! 동적메모리할당(dynamic memeory allocation)은? 직접적으로 메모리를 요청해서 할당받아 데이터를 저장해 두는 것 어떻게 직접적으로 메모리를 요청할 수 있어? malloc 함수를 사용해서!: memory allocation malloc 함수를 호출 → 동적 메모리 할당을 요청 → 요구하는 크기의 메모리를 할당 → malloc 함수가 메모리의 시작주소를 반환 2. malloc 함수 malloc 함수를 사용하기 위해서는 → #include 헤더 필요 변수를 선언하지 않고..
2022.04.18 -
[자료구조 - C언어] 자료구조 제1강: C언어에서 포인터, 배열, 포인터 연산
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 메모리 컴퓨터의 메모리는 데이터를 보관하는 장소 컴퓨터의 메모리 하나의 커다란 테이블, 테이블의 각 칸이 주소를 가진다. 바이트(8 bits) 단위로 주소가 저장됨 정수형 변수는 4byte를 차지한다. 모든 변수는 주소를 가진다. 변수: 메모리의 일정 영역을 차지하면서 어떤 값을 저장할 수 있는 장소 정수형 변수 a는 1002번지부터 1005번지 차지: 변수 a의 주소는 1002번지 2. 포인터(pointer) 포인터는 메모리 주소를 값으로 가지는 변수이다. 포인터는 일종의 변수다. 모든 변수는 주소를 가진다. 정수형 변수는 정수를 값으로 가지는 변수 실수형 변수는 실수를 값으로 가지는 변수 포인터는 메모리 주소..
2022.04.17 -
[Swift 코테] 백준 2775 부녀회장이 될테야
재귀함수로 문제를 풀었다. 1. 분홍색 = 주황색1 + 주황색 2 + 파랑색 2. 주황색1 + 주황색 2. 초록색 3. 분홍색 = 초록색 + 파랑색 f(f, r) = f(f, r - 1) + f(f - 1, r) 4. 재귀함수의 endpoint는 (0층 r호) or (f층 1호) (0층 r호)는 r의 값을 가지고 (f층 1호)는 1의 값을 가진다. 코드 let input = Int(readLine()!)! for i in 0.. Int { if r == 1{ return 1 } if f == 0 { return r } return howmany(f: f - 1, r: r) + howmany(f: f, r: r - 1) } 박박대가리가 된 나를 실감 중... 넘 충격이어서 포스팅합니다.. 백준 잡아먹자구,..
2022.04.15 -
[Swift 기초] 접근제어
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계되어있다. 1. 모듈 배포할 코드의 묶음 단위 하나의 프레임워크, 라이브러리, 애플리케이션이 모듈 단위가 될 수 있다. 스위프트에서는 import 키워드로 불러온다. 2. 소스파일 스위프트 소스 코드 파일 통상 파일 하나에 타입 하나만 정의하지만 소스파일 하나에 여러 타입(여러 개의 클래스, 구조체, 열거형)이나 함수 등 많은 것을 정의하거나 구현 3. 접근수준(Access Level) 각 타입(클래스, 구조체, 열거형 등)에 특정 접근수준을 지정할 수 있고, 타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 각각에도 접근수준을 지정할 수 있다. open, ..
2022.04.13 -
[Swift 코테 기초] 고차함수
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 전달인자로 함수를 전달받거나 함수 실행의 결과를 함수로 반환하는 함수 map, filter, reduce 1. map 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너 생성 컨테이너 타입: Array, Set, Dictionary 등 1-1. 기존의 for 구문 사용 let numbers: [Int] = [0, 1, 2, 3, 4] var doubledNumbers: [Int] var strings: [String] doubledNumbers = [Int]() strings = [String]() for number in numbers { doubledNumbers.append(number * 2) strings..
2022.04.12 -
[Swift 기초] 오류처리
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 오류 표현 enum 오류종류이름: Error { case 종류1 case 종류2 case 종류3 //... } Error 프로토콜과 주로 열거형을 통해 오류를 표현한다. Error 프로토콜 내부적으로는 비어있는 프로토콜 Error를 구현한다는 의미가 중요한 프로토콜 Error 프로토콜을 열거형에 추가한 후 열거형 내에 오류들을 정의 1-1. 예시 //오류를 표현하기 위한 열거형 //자판기 동작 오류 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } 1-2. 함수에서 ..
2022.04.11 -
[Swift 기초] 익스텐션
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능 1. 익스텐션의 특징 익스텐션(extension): 기존의 코드 변경 없이 기능을 추가할 수 있다. 익스텐션은 모든 타입에 적용할 수 있다: 구조체, 열거형, 클래스, 프로토콜, 제네릭 타입 등 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다. 모든 타입에 연산 프로퍼티, 메서드, 이니셜라이저, 서브스크립트, 중첩 데이터 타입 등을 추가할 수 있다. 기능을 추가할 수 있지만, 기존에 존재하는 기능을 재정의 할 수 없다. 프로토콜과 함께 사용하면 더욱 강력 1-1. 클래스와 익스텐션 비교 상속 익스텐션 확장 수직확장 수평확장 ..
2022.04.05 -
[Swift 기초] 프로토콜
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 프로토콜 protocol 프로토콜이름 { /*코드 구현*/ } 타입 타입이름: 프로토콜 채택{ /*코드 구현*/ } 프로토콜(protocol): 프로그램 구성 요소, 프로토콜에는 그것을 사용하는 클래스에 반드시 있어야 하는 특정 속성과 메서드를 정의한다. 구조체, 클래스, 열거형 등의 어떤 타입에 이러한 기능이 꼭 필요하다고 강요하는 것! 특정 객체가 갖추어야 할 기능이나 속성(메서드, 프로퍼티, 기타 요구사항)에 대한 설계도, 구현해야 할 내용의 명세서 채택(Adopted): 구조체, 클래스, 열거형은 프로토콜을 채택해서 특정기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현 준수(Conform): 어떤 프..
2022.04.05