목록문제풀이연습 (7)
Taking baby-developer steps

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의풀이 from collections import deque visited = set() def bfs(maps, y, x, n, m): global visited dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] queue = deque([(y, x)]) while queue : current = queue.popleft(); visite..

스택 구현 -> 파이썬의 list 적합. .append() , .pop() 메서드의 시간 복잡도는 O(1) 이므로 스택 자료구조로 활용하기 적합하다. 큐 구현 -> 파이썬의 deque 적합. list보다 시간복잡도가 낮다. list의 append와 동일하게 동작. 상수시간. popleft는 가장 먼저 들어온 자료를 꺼내는 함수. 마찬가지로 상수시간. 재귀함수 -> 스택 대신 사용할 수 있음 -> 실제 코테중 콜백 수 제한이 있어서 당황해서 dfs 문제를 포기해 버렸다..! 이번 기회에 큐 및 스택으로 문제 푸는 법을 익히고 싶다. --> 파이썬에서는 최대 재귀 깊이가 정해져 있기 때문에 초과 메시지가 출력된다고 한다..! -> c++만 쓰다가 파이썬이 처음이라 몰랐다..! 재귀 제한을 느슨하게 만들거나 ..
문제 : 단어를 1개 입력받는다. 입력받은 단어(영어)의 각 문자를 한줄에 한 문자씩 분리해 출력한다. 입력 단어(영어) 하나를 입력받는다. (단, 단어의 길이는 20자 이하이다.) 출력 단어의 문자(영어)를 하나씩 나누어 한 줄에 한 개씩 ' '로 묶어서 출력한다. #include #include int main(void){ char aWord[21]; scanf("%s", aWord); for(int i =0; i
동적 메모리 할당을 이용해 2차원 배열을 만들면, 정확히 필요한 만큼만 그때 그때 효율적으로 만들어서 사용가능하다. #include #include int main(void){ int** p = (int**)malloc(sizeof(int)*3); for (int i=0; i
특정한 위치의 원소를 삭제하는 함수 Q. 특정한 위치의 원소를 삭제하는 함수는 어떻게 만들 수 있을까? #include #define INF 10000 int arr[INF]; // 메모리 공간이 거의 무한에 가깝게 존재한다고 가정 int count = 0; void addBack(int data){ arr[count] = data; count++ ; } void addFirst(int data){ for(int i = count; i>=1; i--){ arr[i] = arr[i-1] ; } arr[0] = data ; count++; } void show(){ for(int i = 0; i< count ; i++){ printf("%d\n", arr[i]); } } 지난 번 포스팅에서 위와 같이 배열기..
배열 기반의 리스트를 만들고, 특정한 data를 배열의 뒷부분에 담는 함수 addBack(), 특정한 data를 배열의 가장 앞 부분에 담는 함수 addfirst(), 배열에 담겨있는 모든 원소를 하나씩 출력하는 함수 show() 를 만들어 봤다. #include #define INF 10000 int arr[INF]; int count = 0; void addBack(int data){ arr[count] = data; count++ ; } void addfirst(int data){ for( int i = count; i >= 1; i--){ arr[i] = arr[i-1]; } arr[0] = data; count++ ; } void show(){ for (int i = 0 ; i 1 2 3 4 5..
두 정수를 입력받아, 사칙연산 출력하기 #define _CRT_SECURE_NO_WARNINGS #include int main(void){ int a, b; scanf("%d %d", &a, &b); printf("%d + %d = %d \n", a,b, a+b); printf("%d - %d = %d \n", a,b, a-b); printf("%d * %d = %d \n", a,b, a*b); printf("%d / %d = %d \n", a,b, a/b); printf("%d %% %d = %d \n", a,b, a%b); system("pause"); return 0; } 두 정수를 입력받아, 처음 숫자가 큰 값이면 참을 출력하기 #define _CRT_SECURE_NO_WARNINGS #incl..