분류 전체보기(161)
-
[Swift 코테] 백준 2477 참외밭
큰 사각형 - 작은 사각형의 문제다. 문제점은 작은 사각형을 어떻게 구하는지 - 작은 사각형의 변은 큰 사각형의 변과 인접하지 않는다. - 큰 사각형의 가로 변(160)에 인접한 변은 세로변들(30, 50) 세로 변(50)에 인접한 변은 가로변들(160, 100) - 세로변들 차의 절대값(30 - 50)은 작은 사각형의 세로 변 길이(20) - 가로변들 차의 절대값(160, 100)은 작은 사각형의 가로 변 길이(60) - 작은 사각형변 길이(20) X 세로 사각형 변 길이(60) = 작은 사각형 넓이(1200) //코드 import Foundation let num = Int(readLine()!)! var LV = 0; var LH = 0 var VIdx = 0; var HIdx = 0 var inp..
2022.07.17 -
[Swift 코테 기초] 숫자와 문자 구별하기, uppercased()
"123"과 "abc"는 String입니다. 하지만 "123"을 123으로 인식하기를 원할 때 uppercased()를 통해 구분할 수 있습니다. uppercased(): 애플 문서에 따르면 uppercased() 함수는 string을 대문자로 복사해서 리턴하는 함수입니다. string을 uppercased()했을 때 값이 같으면 -> 숫자 다르면 -> 문자 로 구분할 수 있습니다. if str == str.uppercased() { print("숫자: str: \(str), str.uppercased(): \(str.uppercased())") }else{ print("문자: str: \(str), str.uppercased(): \(str.uppercased())") } //str = "abc" 문자..
2022.06.16 -
[Swift 코테 기초] Dictionary key값과 value값 reverse하기
swift에서 딕셔너리 key값과 value값을 교환하는 방법 var reverse = [String: String]() for j in original { reverse[j.value] = j.key }
2022.06.16 -
[Swift 알고리즘] 그래프의 표현
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 에지 리스트(edge list) 에지를 중심으로 그래프를 표현 특정 노드와 관련되어 있는 에지를 탐색하기 쉽지 않기 때문에 노드 중심 알고리즘에서 잘 사용하지 않고 벨만 포드나 크루스칼 알고리즘에서 사용 [에지 리스트로 가중치 없는 그래프 표현하기] 가중치가 없는 그래프는 출발 노드와 도착 노드만 표현 배열의 행은 2개면 충분 노드는 여러 자료형을 사용할 수 있다. [에지 리스트로 가중치 있는 그래프 표현하기] 가중치가 있는 그래프는 행을 3개로 늘려 3번째 행에 가중치를 저장하면 된다. 2. 인접 행렬(adjacency matrix) 2차원 배열을 자료구조로 이용하여 그래프를 표현 노드 중심으로 그래프를 표현 ..
2022.06.15 -
[Swift 코테 기초] String 공백 없이 쪼개기, 내림차순정렬, print문 terminator
1. String을 공백 없이 쪼개는 방법 1-1 보다 더 간편한 방법을 찾았다. var string1 = Array(readLine()!) //["A", "B", "C", "D", "E", "F"] var string2 = "ABCDEF".map{String($0)} //["A", "B", "C", "D", "E", "F"] + Int형으로 변환 var string = "12345".map{Int(String($0))!} //[1, 2, 3, 4, 5] 1-1. 참고 1. 123456 -> [1,2,3,4,5,6] 으로 변환하는 방법 var num: String = readLine()! var arr = [Character]() for index in 0.. Int 형 변환: map을 사용해서 - ch..
2022.06.02 -
[Swift 코테] 백준 2108 통계학
산술평균, 중앙값, 범위를 구하는 것은 모두에게 문제가 없을 것이라고 생각한다. 그래서 최빈값에 대해서만 적어보겠다. 처음엔 계수 정렬을 사용해서 최빈값을 따로 계산하려고 했는데 -> 음수를 고려해서 배열의 인덱스를 다시 설정해야 하는 번거로움이 있었다. 그래서 서치 결과 딕서너리의 활용법을 통해 문제를 풀 수 있었다. 1. 숫자를 입력받을 때 dictionary의 key값에 숫자를 value에 += 1을 해주는 방식으로 dictionary를 세팅한다. let input = Int(readLine()!)! var arr = [Int](repeating: 0, count: input) var dict = [Int: Int]() for i in 0.. 1{ print(mode[1]) }else{ print(..
2022.06.02 -
[자료구조 - C언어] 자료구조 제9강: 전화번호부 v4.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 더 많은 항목, 구조체 업데이트되는 점 각 사람에 대해 이름, 전화번호, 이메일, 그룹을 지정할 수 있다. 이름을 제외한 항목은 비워둘 수 있다. 이름이 여러 단어일 수 있다. 단어 사이에 여러 개의 공백은 한 칸의 공백으로 저장된다. → 한 단어씩 읽기가 어렵다 1. 구조체 항상 같이 붙어다녀야 하는 데이터를 별개의 변수들에 분산해서 저장하는 것은 바람직하지 않다. names, numbers, emails, goups로 서로 다른 4개의 배열에 분산해서 저장하는 것 X 구조체(structure): 항상 같이 붙어 다녀야 하는 데이터들을 하나의 그룹으로 묶어주는 역할 typedef struct person{ char ..
2022.06.02 -
[자료구조 - C언어] 자료구조 제8강: 전화번호부 v3.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 배열 재할당, 라인 단위 입력과 문자열 tokeninzing #include #include #include #define INIT_CAPACITY 3 #define BUFFER_SIZE 50 void init_directory(); void process_command(); int read_line(char str[], int limit); char ** names; char ** numbers; int capacity = INIT_CAPACITY; int n = 0; char delim[] = " "; int main(){ init_directory(); //배열 names, numbers를 동적 메모리 할당으로 ..
2022.05.24 -
[Swift 알고리즘] 정렬 알고리즘
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 대부분 O(n²)과 O(nlogn) 사이의 시간 복잡도 정렬 알고리즘 정의 시간복잡도 버블(bubble) 데이터의 인접 요소기리 비교하고, swap 연산을 수행하며 정렬하는 방식 O(n²) 선택(selection) 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식 O(n²) 삽입(insertion) 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식 O(n²) 퀵(quick) pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식 O(nlogn) 병합(merge) 이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식 O(nlogn) 힙(hea..
2022.05.23 -
[자료구조 - C언어] 자료구조 제5강: 전화번호부 v2.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 파일로 저장하고 로드하기, 알파벳 순으로 정렬 https://ksk9820.tistory.com/138 코드 참고 void load(); void save(); int search(); if (strcmp(command, "read") == 0) load(); else if (strcmp(command, "save") == 0) save(); 1. load() void load(){ char fileName[BUFFER_SIZE]; char buf1[BUFFER_SIZE]; char buf2[BUFFER_SIZE]; scanf("%s", fileName); // 파일의 이름을 입력받음 FILE *fp = fopen(f..
2022.05.06 -
[자료구조 - C언어] 자료구조 제4강: 전화번호부 v1.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 자료구조 프로그램에서 사용되는 data들을 어디에 어떤 구조로 저장할 것인지 어떤 자료구조가 필요한지? 어떤 data를 다루는지에 따라 복습) 배열을 사용하는데 필요한 3가지 요소 배열의 이름 배열의 크기 배열의 타입: 각 칸에 저장되는 데이터의 타입 전화번호부의 이름: names의 문자열의 각 칸은 John과 같은 이름의 주소를 가리키고 있다. char * names[100]; 전화번호부의 번호: numbers의 문자열의 각 칸은 01012345678과 같은 문자열의 주소를 가리키고 있다. char * numbers[100]; 2. 전화번호부 v1.0 #include #include #define CAPACIT..
2022.04.28 -
[자료구조 - C언어] 자료구조 제3강: 문자열 예제
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 문자를 입력받고 출력하기 + 문자 길이 #include #include #define BUFFER_SIZE 20 int main(void){ char buffer[BUFFER_SIZE]; while(1){ printf("$ "); //scanf("%s", buffer); //scanf %s는 공백 단위로 단어 하나씩만 입력받음 //gets(buffer); //gets는 줄바꿈 문자가 나올 때 까지 통째로 읽음 fgets(buffer, BUFFER_SIZE, stdin); printf("%s:%d\\n", buffer, strlen(buffer )); } } scanf %s는 공백 단위로 단어 하나씩만 입력받기 때..
2022.04.26