본문 바로가기

분류 전체보기

(28)
[클린코드 독서] 1장 - 깨끗한 코드 사놓고 박아뒀던 클린코드를 드디어 읽기 시작했다. 두께가 굉장하고 다소 딱딱하게 생겨서 재미가 없을거라 생각했는데 보기와 달리 책의 문체는 유쾌했다! 특히 이 구절에서 양심이 찔렸다.. 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대 충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다. ㅎㅎ..개발자라면 모두들 동감할것이다. 헬리콥터처럼 날아가는 비둘기짤이 유명해진데에는 다 이유가 있다. 나도 저런 경험을 많이 했고 그렇기에 좋은 코드를 짜는게 ..
[인프런 C++ 코테강의]선택정렬 응용 - 3등의 성적은? 👩‍💻코드 🧩풀이 코드풀이 역시나 또 흔한 선택정렬이다. 다만 이번에 달라진건 중복에 신경써야하고, 내림차순으로 정리했다는점! 중복제거는 내 나름대로 짜봤다. count변수를 둬서 이거로 등수를 센다. 배열을 한번 훑으면서 list[i-1]하고 지금 list[i]하고 같은 숫자이면 count++하지 않도록 하였다. 즉, 숫자가 달라질때마 count하는것이다. 이렇게 해서 count가 3이면 해당 숫자를 출력하게끔 코드를 짰다.
[인프런 C++ 코테강의] 선택정렬 오늘부터 코딩테스트 공부할때 머리에 확실히 새기기위해서 중요한 알고리즘이나 자료구조같은 경우는 아이패드에 직접 손코딩해가면서 이해하기로했다. 파이팅! 👩‍💻코드 🧩분석 코드설명 흔한 선택정렬 코드이다. c++에 맞춰서 iostream과 vector를 사용하였다. 이중for문을 통해서 앞에서부터 차곡차곡 i번째 수와 그 뒤의 i+1~ n까지의 수를 계속 비교하면서 가장 작은값으로 i번째수를 swap하는 방식이다. 이론설명 시간복잡도 - O(n2) 이중 for문이라 시간이 n제곱이다. 이정도면 많이 걸리는편. 주로 nlogn정도는 돼야 준수한 속도이다.
[백준] 1021번 문제 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그..
[백준] 10845: 큐 이번문제는 그냥 간단한 큐만들기였다! 문제: 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N..
[백준] 스택 문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 풀이 #include #include using namespace std; int stack[10001], top = -1; void push(int x){ stack[++top] = x..
약수의 개수와 덧셈 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ left ≤ right ≤ 1,000 입출력 예 leftrightresult 13 17 43 24 27 52 입출력 예 설명 입출력 예 #1 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다. 수약수약수의 개수 13 1, 13 2 14 1, 2, 7, 14 4 15 1, 3, 5, 15 4 16 1, 2, 4, 8, 16 5 17 1, 17 2 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다. 입..
[프로그래머스] 소수찾기 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 nresult 10 4 5 3 입출력 예 설명 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 풀이 class Solution { public int solution(int n) { int answer = 0; for(int i=2; i