SOLID BASIC
[ C ] 포인터란? 메모리 주소 | 포인터 연산자( &, *)
C 언어는 메모리에 접근해서 원하는 방식으로 데이터를 사용할 수 있는 언어이다. 이것이 가능한 이유는 바로 '포인터' 덕분이다. 변수는 함수 내부로 사용이 제한되어 있다. 같은 변수명을 사용했다고 하더라도 블록이나 함수가 다르면 별도의 저장 공간을 확보하므로 아예 다른 변수로 사용된다. 사용 범위를 벗어난 경우도 데이터를 공유할 수 있도록 하는 포인터의 개념을 알아보자! 메모리 주소 메모리는 우리가 데이터를 넣고 꺼내 쓰는 공간이다. 그래서 그 위치를 식별할 수 있어야한다. 메모리의 위치는 주소값으로 식별할 수 있다. 주소값은 '바이트 단위'로 구분된다. 0부터 시작하고, 바이트 단위로 1씩 증가한다. int a = 10; 위와 같이 선언했다고 하자. 위 문장은 100번지부터 103번지 까지 4 바이트 ..
[ C ] 문자를 저장하는 배열 | char 형 배열 | 문자열 대입 방법 | strcpy(), gets(), puts()
단어는 보통 알파벳을 연속적으로 적고 그 순서에 따라 의미가 달라진다. 이런 단어를 컴퓨터 메모리에서 데이터로 처리하려면 순서에 맞게 연속적으로 저장해야하는데, 이때 사용하면 아-주 적합한 자료형이 바로 배열이다. 특히 알파벳 문자 같은 경우 한 바이트로 표현이 가능하므로, char형 배열을 사용하는 것이 적합하다! char 형 배열의 선언과 초기화 char형 배열을 선언할 때는 저장한 문자열의 길이보다 최소한 하나 이상 크게 선언해야한다. 예를들어 문자열 'apple'을 저장하려할때, 배열은 배열 요소의 개수가 최소한 6 개 이상이어야한다. 즉, 남는 공간이 하나 이상은 있어야 한다는 것! 왜일까? 널문자(\0) 때문이다. char str[100] = "applejam"; 초기화한 문자들은 배열의 처음..
[ C ] 배열 | 배열의 선언과 사용
동일한 자료형을 저장할 공간이 많이 필요하다면 일일이 변수를 선언하는 것은 쉽지 않다. 이때 사용하는 것이 '배열'이다. int kor, math, eng, sosial, science; //다섯 가지 변수가 있다고 생각해보자. 다섯 가지 과목의 점수를 저장하기 위해 변수 다섯 개를 선언했다고 가정하자. 따로따로 선언했으므로, 점수를 일일히 변수에 집어넣어줘야한다. 변수의 이름이 별도로 존재하니까... < 상당히 귀찮다 ㅋ 그래서 사용하는 것이 바로 '배열'! 같은 형태의 많은 데이터를 반복문으로 처리할 수 있도록 메모리에 연속적으로 저장해놓고, 이를 쪼개어 사용한다면 매우 효율적인 데이터 처리가 가능할 것이다. 배열을 선언해보자 배열 역시 선언을 통해 공간을 확보한다. 하나의 이름으로 한꺼번에 확보하면..
[ C ] 겨울방학동안 C 포인터/ 구조체/ 동적메모리 개념 확실하게 익히기 | 자료구조 학습전 갖추어야할 베이스지식
개강까지 한 달하고 조금 넘게 남았다. 다음 학기에는 자료구조를 수강하는데, 지난번 글에도 언급했지만 C언어 교수님께서 자료구조를 제대로 공부하기 위해 C 언어의 탄탄한 베이스가 중요하다고 하셨다. 특히 포인터! 만일 자신이 생각하기에 C언어에대한 지식이 부족하다고 느낀다면 방학을 활용해 확실하게 개념을 잡으라고 하셨다. 내가 개인적으로 존경하는 교수님이기도하고, 굉장히 명교수님이셔서 조언을 꼭 새겨들어야겠다고 다짐했었다. 그래서 다음 학기에 교수님께서 활용하시는 교재를 미리 공부하는 중인데, C 언어의 개념이 확실히 중요하다는게 와닿았다. (자료구조 언어를 C로 배움) 그래서 C언어의 주요 개념들을 확실하게 다시 공부해보려고 한다! 작년 초에 C 예습한다고 구매했던 '혼자 공부하는 C 언어'와 학교에서..
[백준] 10869번 사칙연산 출력하기 - JAVA
Scanner 로 입력받아 연산하는 방법과 BufferedReader 로 입력받아 연산하는 방법, 두 가지 방법으로 풀이할 것이다! 1-1) import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int A = in.nextInt(); int B = in.nextInt(); in.close(); System.out.println(A+B); System.out.println(A-B); System.out.println(A*B); System.out.println(A/B); System.out.println(A%B); } } 1-2) impor..
[리듬게임 만들기] 시작 화면에 음악 삽입하기 | JAVA 미니 프로젝트(3)
[리듬게임 만들기] 게임 시작 화면 개발하기 | JAVA 미니 프로젝트 (2) 동빈나님의 리듬게임 만들기 강의 영상 [리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | (1) 자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 changel.tistory.com 게임 시작 화면을 만든 뒤 시작 화면에 음악을 삽입하는 코드를 작성해 보았다.
[리듬게임 만들기] 게임 시작 화면 개발하기 | JAVA 미니 프로젝트 (2)
동빈나님의 리듬게임 만들기 강의 영상 [리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | (1) 자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 확신이 들지 않았다. 현재 교내 로보틱스 동아리에서 서버단을 맡았기에 당장 프로젝트에 투입되어야하는 상 changel.tistory.com 게임 시작 화면을 만들었다.
[리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | JAVA 미니 프로젝트 (1)
자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 확신이 들지 않았다. 현재 교내 로보틱스 동아리에서 서버단을 맡았기에 당장 프로젝트에 투입되어야하는 상황인데, 자바 개념이 잘 잡혀있지 않으니 김영한님의 스프링 로드맵 강의도 제대로 이해가 안 되는 것 같고 여러모로 불편함을 느끼었다. 그래서 스프링 강의는 잠시 멈추고! 자바를 확실하게 공부하고자 한다. 그래서 좀 전에 자바의 정석 책도 구매했다. 차근차근 여러 번 회독하면서 확실하게 익혀야겠다. 아무튼 지금까지 공부한 자바의 얕은 지식을 이용해 '동빈나'님의 리듬게임 만들기 프로젝트를 진행해보려한다. 만들어나가면서 새로운 개념도 배우고, 내가 배운걸 적용해보면서 자바를 이용한 창작물을 만드는 것이 목표이다. 동빈나님은 개인..
[알고리즘] 순환(Recursion)의 개념과 기본 예제 1, 2, 3
Recursion : 자기 자신을 호출하는 함수(재귀함수) java식) 자기 자신을 호출하는 method > void func(...) { ... func(...); ... } what will happen? public class Code01 { public static void main(String [] args) { func(); } public static void func() { System.out.println("Hello"); func(); #자기자신을 다시 호출 } } 무한루프에 빠짐 그럼 Recursion은 항상 무한루프에 빠질까? public class Code02 { public static void main(String [] args){ int n =4; func(n); } publ..
[알고리즘] 개념을 재정리 하기 위한 알고리즘 커리큘럼 로드맵
지난학기 알고리즘을 수강했었는데 어려움을 많이 느낀 과목이었다. 이번 방학에는 알고리즘 커리큘럼을 새우고, 탄탄한 알고리즘 실력을 기르려고 한다. 내가 지향하는 바는 SOLID BASIC 이니까! 백준 문제 커리큘럼 입출력 방식에서 시작해서, 기초 자료구조, 기초 수학, DP, 정렬, 그래프, 이분탐색, 분할정복, 그리디, 완전탐색으로 끝이 남 입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992 DP - 1463, 1..