* 본 게시글은 ChatGPT를 이용하여 작성한 글입니다. 질문시간복잡도에 대해 공부하고 있는데, 혹시 이거 외우는 팁같은거 있어? 예를들어 for문2개면 n^2이고 이진탐색은 logn인건 아는데 nlogn은 어떤 구조여야 하는지 모르겠어. 답변시간 복잡도를 잘 이해하고 외우기 위한 몇 가지 팁과 예시를 제공하겠습니다. 이 정보를 통해 알고리즘을 분석할 때 직관적으로 시간 복잡도를 유추하는 능력을 기를 수 있습니다. ### 1. **기본 시간 복잡도 공식** - **O(1)**: 상수 시간, 입력 크기와 무관하게 일정한 시간이 걸림. - 예시: 배열에서 특정 인덱스 접근, 변수 할당. - **O(log n)**: 로그 시간, 일반적으로 탐색과 관련됨. - 예시: 이진 탐색, 로그 시간 탐색 ..
CS

2차원 배열 list[N][2]을 선언하여 첫번째 자리에는 x좌표를, 두번째 자리에는 y좌표를 넣는다. 이후 list를 Arrays.sort()를 통해 정렬하는데 Arrays.sort의 규칙은 다음과 같다. 1. x좌표(list[i][0])를 비교해서 오름차순으로 정렬한다. > s1[0] - s2[0] 반환 2. 만약 x좌표가 같다면 y좌표를 비교해서 오름차순으로 정렬한다. > s1[1] - s2[1] 반환 전체코드는 다음과 같다. (람다식을 이용했다.) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public s..

현재 난항을 겪고 있는 부분은 다음과 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { //input BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(" "); //output System.out.println(str.length); } } 주로 틀리는 반례인 공백만 입력했을 때도 0으로 잘 뜨는데..
먼저 아래 코드를 보면 그냥 int형을 element로 정의하고 쓰는 모습을 볼 수 있다. typedef int element; typedef struct { element data[MAX_STACK_SIZE]; int top; } StackType; 이를 응용하면 data의 자료형을 복잡하게 할 수도 있는데, 아래 코드는 data의 자료형이 구조체인 경우다. data 배열을 살펴보면 대충 {8, "김유나"}, {10, "김철수"}, {22, "황민수"}... 와 같은 형태로 이루어졌을 것이다. typedef struct{ int age; char name[MAX_STRING]; }element; //typedef로 element라는 자료형 정의. 구조체 형태의 자료형이다. typedef struct {..
구조체를 처음 공부했을 때에는 포인터 자체에 허덕이느라 동적 할당이나 구조체 포인터같은 점들을 깊게 생각해보지 않았었는데, 다시 보니 엄청 어려운 개념이었다... 구글링해서 본 글들 중에 이해한 것들을 말로 정리하자면, 일단 구조체 포인터를 왜 사용하냐면 동적 할당을 통해 메모리 낭비를 막기 위함이다. 동적 할당은 기존의 정적 할당들과 달리 메모리 공간을 내가 커스텀해서 할당할 수 있다. 이를 통해 유연하게 메모리를 관리(절약)할 수 있다. 동적할당은 malloc, calloc, realloc 이렇게 3가지인데 realloc은 (새로 메모리를 할당하는 다른 동적할당들과 달리) 기존의 메모리를 재할당, calloc은 메모리 할당을 해체할 때 데이터를 초기화, malloc은 메모리 초기화는 안되지만 call..
1. 구조체란? 사용자 정의 자료형(User Defined Data Type)이다. int, bool, char의 자료형들은 그 쓰임새가 정해져 있는 반면, 구조체는 그걸 이용해 나만의 자료형 뭉치를 커스텀할 수 있다. 2. 배열과의 차이점 구조체(structure)는 타입이 다른 데이터들을 묶을 수 있다는 점에서 배열과 구분된다. (구조체가 같은 자료형으로 묶을 수 없다는 뜻은 아니다. int X; int Y;처럼 같은 자료형으로 구성할 수도 있다.) //배열 char* name[10]; //char형 자료들만 묶음 int age[10]; //int형 자료들만 묶음 //구조체 struct person{ char* name; int age; }; //char형, int형의 타입이 다른 자료들을 같이 묶음..