https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr 1. 원형을 선형으로 생각해보자 , weak의 길이를 두배로 늘려서 선형으로 생각한다. 2. 친구들을 배치해야한다. -> 파이썬에서는 순열 조합을 permutations 함수로 구현할 수 있다. 친구들을 배치하는 방법을 모두 구한다음에 완전탐색으로 필요한 친구의 최소 값을 구한다. dist의 길이가 1이상 8 이하이고 8! = 약 4만 정도이므로 완전탐색으로 풀..
분류 전체보기
문제 링크 : https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 도시에 있는 치킨집 중에서 최대 M 개를 골랐을 때, 도시의 치킨 거리를 구하는 문제이다. 치킨집들 중에서 M 개를 고르는 경우를 구할때 파이썬의 조합 라이브러리를 이용하면 이 문제는 생각보다 쉽게 풀 수 있다 (!) itertools의 combination을 사용한다 풀이 과정은 다음과 같다 1. data 입력을 받는다 2. for 문으로 data 입력 받을 ..
IMU senser의 특징 * Dead reckoning : The process of calculating current position of some moving object by using a previously determined position ex. Accelerometer & Gyroscope 가속도와 각속도를 이용해서 현재의 위치를 계산한다 ! -> 계산하는 방법 다시 강의듣기 ㅠㅠ * Non-dead reckoning example : The process of calculating current position of some moving object independently of a previously determined position -> ex. GPS & Magnetometers ..
ㄷㄷ 와 대체 C언어를 4학년때 다시 하는데 왜이렇게 깨닫는게 많은지 대박 이걸 몰랐네 왕신기하다 ! 하는 모먼트들이 종종 있다 ㅋㅋㅋㅋ int main(int argc, const char * argv[]) { int score[] = {77,88,99}; for (int i = 0; i < 3; i++) { printf("%2d %10u %6d \n", i, (score+i), *(score+i)); } return 0; } [RESULT] 0 4022334556 77 1 4022334560 88 2 4022334564 99 내 컴퓨터에는 저리 찍힌다 딱봐도 알겠지만 (score+i) 이게 주소값이다 이말은 다음과도 같다 !! &(score[i]) == score + i 대박사건~~~ 배열 그 자체에..
c언어에서는 저장된 크기를 알려주는 sizeof() 함수를 이용하여 배열의 크기를 구할 수 있다. int main(int argc, const char * argv[]) { double degree[] = {-5.34, 3.67, 19.76, 28.76, 35.63}; // 배열 Degree 선언하기 int size = sizeof(degree)/sizeof(degree[0]); // 배열의 크기 계산 for (int i = 0; i < size; i++) { printf("%.2f \n",degree[i]); } return 0; }
C언어를 하다보면 & 연산자 * 연산자 그리고 포인터는 봐도봐도 헷갈린다.. 참 한번에 바로 이해되기 어려운 개념인것 같다. 정리하며 이해해보자 !! 1. 포인터 변수와 주소연산자 & 포인터 변수 : 주소값을 저장하는 변수이다. 변수의 주소값은 반드시 포인터 변수에 저장하고 일반 변수에는 포인터가 아닌 일반 자료 값을 저장한다. 일반 변수랑 선언하는 방법도 다르고 포인터 변수 라는 것 자체가 또 다른 타입이라고 생각하면 된다. 포인터 변수의 선언방법 : 자료형 * 변수이름 ex) int *pointerInt; 변수의 자료형이 다르면 당연히 그 변수의 주소를 저장하는 포인터의 자료형도 달라야 한다 !! int data = 100; int *ptr; ptr = &data 2. 간접연산자 * 포인터 변수가 갖..
와 대박이다 이거 풀이의 핵심 알고리즘이 뭔지 아세여????놀랍게도 bfs임 와이파이 모양으로 확장하는거 왠지모르게 bfs는 와이파이 모양이 떠오른다.. 그리고 그렇게 생각하면 쉽게 이해된다) 자자 암튼 코드는 이렇다 # 1697 from collections import deque N, K = map(int,input().split()) MAX = 10 ** 5 dist = [0] * (MAX+1) def bfs(): q = deque() q.append(N) while q: x = q.popleft() if x == K: print(dist[x]) break for nx in (x-1, x+1, x*2): if 0
머엉... 재귀함수에 아직 익숙하지 않아서 어렵다 ! 이 문제를 읽으면 재귀함수가 딱 떠오른다 0-1-2-3 이렇게 4칸을 Z 모양으로 탐색한다 그런데 분명 재귀함수를 써야할 것 같은데.. 어디서 쓰면 좋을지 이해하는게 관건이다 처음에는 4칸씩 확장해 나가다가 c행 r열 칸을 찾으면??? 될까 라는 생각을 함 근데 큰 정사각형 덩어리에서 4분의 1 (즉 2*(n-1) * 2*(n-1))로 줄어든다는 것으로 접근하는게 쉽다 그러니까 큰 정사각형을 4칸으로 자르고 또 잘라진 4칸을 각각 잘라진 4분의 1 정사각형에서 4칸으로 자르고... 즉 !! N의 값이 N/2로 연산 할때마다 줄어든다!! 그리고 시작점을 (x,y)==(0,0)라고 생각한다 # 1074 py N, r, c = map(int, input()..