전체 글

소프트웨어 개발 블로그
· Language/C++
포인터와 주소 포인터 메모리의 주소 값을 담고 있는 변수 또는 상수 데이터 위치를 가리키는 변수 주소 메모리 저장된 위치(번지) & 연산자를 사용하면 특정 변수의 주소를 반환 단항 간접 참조 연산자 #include void main() { int a; int *pa; a=10; pa=&a; printf("a: %d\n", a); // 10 *a=100; printf("a: %d\n", a); // 100 } 더블 포인터 #include void main() { int A = 50, B = 100; int* pA = &A; int** dpA = &pA; /* Test 1 */ printf("pA : %d\n", *pA); // 50 printf("dpA : %d\n\n", **dpA); // 50 /* T..
· Language/C++
지역 변수 (Local Variable) – 선언한 지역을 벗어나면 기억 공간에서 자동 소멸 – 지역은 { } 로 구분 #include int main() { int a = 30; { int a = 60; printf(“1. a: %d\n”, a); } printf(“2. a: %d\n”, a); return 0; } 1. a: 60 2. a: 30 정적 변수 (Static Variable) – 정적 변수 사용하면 영역을 벗어나도 메모리 공간에서 소멸하지 않음 – 값 또한 그대로 유지 – 일종의 한번 선언하고 나면 계속 유지되는 변수 – 초기화 하지 않으면 자동으로 0으로 초기화 #include void count() { static int c; c = c + 1; printf(“c: %d\n”, c);..
· Language/C++
증상 보안상의 이유로 scanf가 아닌 scanf_s 사용 권장 error C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 이 함수 또는 변수는 안전하지 않을 수 있습니다. scanf_s를 대신 사용하는 것이 좋습니다. 사용 중단을 사용하지 않도록 설정하려면 _CRT_SECURE_NO_WARNINGS를 사용합니다. 자세한 내용은 온라인 도움말을 참조하세요 해결 방법 scanf 대신 scanf_s 사용 또는 코드 맨 위에 #define _CRT_SECU..
· A.I
학습 방법론 Supervised Learning 지도학습은 학습에 필요한 데이터에 클래스 라벨이 이미 붙어 있는 경우이다. 클래스 라벨은 어떤 인스턴스(ex. 사람, 도시, 차, 음식 등)의 데이터가 주어졌을 경우 그 인스턴스가 어느 분류에 속하는지 나타낸다. 클래스는 연속된 값(continuous value) 또는 분리되어 나누어지는 값(discrete)로 분류된다. input feature(데이터의 클래스)를 직접 입력해 주어야 하는 한계가 있다. 예시 인스턴스. 인스턴스: 소리 데이터: 강아지 소리, 아기 울음 소리, 여성 목소리, 자동차 소리, … 클래스: 강아지 소리 클래스, 아기울음 의미 클래스, 자동차 소리 구별 클래스, 등 Unsupervised Learning 위와 같은 클래스가 붙지 않..
· Language/C++
Memory allocation malloc은 코딩에서 동적 메모리 할당이라는 부분을 배울 때 가장 처음 등장하는 단어입니다. 이는 memory allocation의 준말로 정해진 static 공간이 아닌 dynamic한 공간이 프로그램에서 필요할 때 사용합니다. #include int main() { int length; char str1[100]; char *str2; printf("Input size: "); scanf("%d", &length); str2 = (char*)malloc(sizeof(char) * length + 1); // ... // 해제 } 사용자가 글자를 입력하는 상황이 발생할 때, 위와 같이 str1처럼 정적으로 받는 방식과 str2처럼 실제 필요한 크기만큼 동적으로 할당해서..
· Algorithm
문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 예제 입출..
· Algorithm
https://www.acmicpc.net/problem/2579 [ACMICPC]http://mystes.net/it/algorithm/run-away-sequence-alogrithm/ [유사 문제]다이나믹 프로그래밍Baekjoon #2579 | 백준 2579 문제계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째, 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 ..
· Algorithm
https://www.acmicpc.net/problem/1463 [ACMICPC]1로 만들기Baekjoon #1463 | 백준 1463 문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다.예제 입력12예제 출력11예제 입력 2110예제 출력 213힌트10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들 수 있다. A.1234..
· Algorithm
고속도로 순환 알고리즘 Q. 어느 도시에 원형으로 된 도로가 존재한다. 도로에는 N개의 에너지 충전소가 존재하는데 각각의 충전소에서 충전할 수 있는 에너지의 양이 모두 다르다. 이 때 N개의 충전소 중 어떤 지점에서 출발하여야 모든 충전소를 순회하고 원 지점으로 올 수 있는지 그 시작 지점을 반환하라. 이 때 자동차가 특정 지점으로 갈 때 정해진 양의 에너지를 소모하며 자세한 사항은 아래 예제를 참조한다. 만약 출발할 수 있는 지점이 여러 개일 경우 가장 작은 인덱스를 반환한다. 단, 자동차의 충전에는 제한이 없지만 첫 시작 에너지는 0으로 가정한다. 입력 먼저 충전소의 지점 개수를 위한 정수를 입력한다. 다음으로 각각의 충전소에서 충전할 수 있는 양을 지정한다. (띄어 쓰기) 마지막으로 충전소에서 다음..
· Algorithm
https://www.acmicpc.net/problem/2839 [문제 풀기]나눗셈 및 나머지Baekjoon #2839 | 백준 2839 문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 ..
· Algorithm
알고리즘 연습 Level 6 | 프로그래머스미완Q.물건 값보다 많은 돈을 낼 경우 거스름돈을 돌려주게 됩니다. 거스름돈은 한 금액의 돈으로 줄 수도 있지만, 여러 금액의 동전을 섞어 거슬러 줄 수 있습니다.거스름돈이 N원일 때, 1원, 2원, 5원 동전이 있다면 몇 가지 방법으로 돈을 거슬러 줄 수 있을까요? change 함수를 통해 경우의 수를 반환해주는 함수를 만들어 보세요. K에는 사용할 수 있는 동전의 종류가 들어 있습니다.예를 들어, N = 5이고 K = [1, 2, 5]이면 1원, 2원, 5원 동전을 가지고 5원을 맞추는 경우의 수를 찾으면 됩니다.1원 5개1원 3개, 2원 1개1원 1개, 2원 2개5원 1개이렇게 총 4가지 경우가 있으면, 4를 리턴해 주면 됩니다.A.1234567891011..
· Algorithm
알고리즘 연습 Level 6 | 프로그래머스 Q.과자를 좋아하는 동우는 책상 위에 일렬로 놓아진 과자를 발견하였습니다. 과자에는 맛을 숫자로 평가한 종이가 붙어 있습니다. 동우는 맨 왼쪽부터 순서대로 과자를 먹기로 하였습니다. 동우는 먹을 과자를 고를 때 이전에 먹은 과자보다 맛이 더 좋은 과자만 먹습니다.제일 처음에 맛이 3인 과자를 먹었다면, 다음에는 4보다 작은 맛의 과자는 먹지 않습니다.책상위에 놓인 과자의 맛이 입력되면, 동우가 최대 과자를 몇 개를 먹을 수 있는지 반환해주는 eatCookie 함수를 완성하세요.예를 들어 [1, 4, 2, 6, 3, 4, 1, 5] 가 입력된다면 동우는 1, 3, 5, 6, 8번째 과자(각각의 맛은 1, 2, 3, 4, 5)를 골라 총 5개를 먹을 수 있고, 5..
· Algorithm
문제 카카오내비 개발자인 제이지는 시내 중심가의 경로 탐색 알고리즘 개발 업무를 담당하고 있다. 최근 들어 보행자가 자유롭고 편리하게 걸을 수 있도록 보행자 중심의 교통 체계가 도입되면서 도심의 일부 구역은 자동차 통행이 금지되고, 일부 교차로에서는 보행자 안전을 위해 좌회전이나 우회전이 금지되기도 했다. 복잡해진 도로 환경으로 인해 기존의 경로 탐색 알고리즘을 보완해야 할 필요가 생겼다. 도시 중심가의 지도는 m × n 크기의 격자 모양 배열 city_map으로 주어진다. 자동차는 오른쪽 또는 아래 방향으로 한 칸씩 이동 가능하다. city_map[i][j]에는 도로의 상황을 나타내는 값이 저장되어 있다. 0인 경우에는 자동차가 자유롭게 지나갈 수 있다. 1인 경우에는 자동차 통행이 금지되어 지나갈 수..
· Algorithm
문제 출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자. 입력 형식 입력은 그림의 크기를 나타내는 m과 n, 그리고 그림을 나타내는 m × n 크기의 2차원 배열 picture로 주어진다. 제한조건은 아래와 같다. 1 0 && curVal == g_vecPicture[x - 1][y]) { cnt += floodFill(x - 1..
· Algorithm
문제 하노이의 탑은 대표적인 퍼즐의 일종입니다. 세 개의 기둥이 있고 맨 왼쪽의 기둥에는 원판의 크기 순서대로 N개가 쌓여 있습니다. 이렇게 쌓여 있는 원판을 가장 오른쪽 기둥으로 모두 옮겨야 합니다. 단, 한 번에 원판을 하나씩 이동시킬 수 있고, 큰 원판을 작은 원판 위에 쌓을 수 없습니다. N개의 원판은 총 2N -1 번의 과정을 거쳐 이동할 수 있습니다. 하지만 어떠한 과정으로 원판을 옮겨야 2N -1 번만에 옮길 수 있는지는 아직 모릅니다. 원판이 N개 있을 때, Hanoi 함수에서 어떠한 과정으로 2N -1 번만에 옮길 수 있는지 과정을 리턴하세요. 리턴값의 표기 방법은 다음과 같습니다. 3개의 기둥은 순서대로 각각 1, 2, 3번으로 표기합니다. 원판을 기둥1에서 기둥3으로 이동했다면 [1,..
lasiyan
LA Dev.