| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- datastructure
 - 혼자 공부하는 C언어
 - insertion sort
 - Graph
 - JSON
 - 메모리구조
 - 이것이 자바다
 - list 컬렉션
 - C 언어 코딩 도장
 - s
 - Stack
 - C programming
 - Serialization
 - 알기쉬운 알고리즘
 - Algorithm
 - buffer
 - coding test
 - stream
 - 윤성우의 열혈 자료구조
 - R
 - 이스케이프 문자
 - 윤성우 열혈자료구조
 - Selection Sorting
 
- Today
 
- Total
 
목록전체 글 (517)
Engineering Note
Link : https://www.acmicpc.net/problem/1913 Note 숫자 입력 방식에서 규칙이 없을지 직접해보면서 방향 전환에서 규칙을 발견했다. N이 3일 경우 1:(상, 우) 2:(하,하 좌,좌, 상,상) N이 5일 경우 1:(상, 우) 2:(하,하, 좌,좌) 3:(상,상,상, 우,우,우) 4:(하,하,하,하, 좌,좌,좌,좌, 상,상,상,상) N이 7일 경우 1:(상. 우) 2:(하,하, 좌,좌) 3:(상,상,상, 우,우,우) 4(하,하,하,하, 좌,좌,좌,좌) 5:(상,상,상,상,상, 우,우,우,우,우) 6:(하,하,하,하,하,하, 좌,좌,좌,좌,좌,좌, 상,상,상,상,상,상,상) 으로 변화한다. i가 1부터 N-2 까지는 증가할 때 방향회전 방식은 다음과 같다. 상,우,하,좌가..
Link : https://www.acmicpc.net/problem/2444 Note N에 대하여 1번째줄부터 N번째 줄까지는 다음과 같은 규칙을 갖는다. i 번째 줄은 " "(스페이스 공백)은 (N-i)개를 출력하고 "*"은 (2*i-1)개를 출력한다. 그리고 다시 N+1 부터는 N+N-1번째 줄까지는 다시 N+1 번째 줄을 새로운 첫 번째 줄이라고 생각할 때 j번째 줄은 " "(스페이스 공백)은 j번 출력하고 "*"를 (2*(N-1) -(2*j-1))을 출력한다. 예를 들면 N이 5일 때, 첫 번째줄 " "-4번, *-1번 두 번째줄 " "-3번, *-3번 세 번째줄 " "-2번, *-5번 네 번째줄 " "-1번, *-7번 다섯 번째줄 " "-0번, *-9번 여섯 번째줄 " "-1번, *-7번 (새..
Link : https://www.acmicpc.net/problem/1748 Note 1부터 주어진 숫자N까지 연속으로 썼을 때 자리수를 구하는 문제다. 규칙을 찾아 점화식을 세워서 풀었다. 19까지의 한 자리수를 추가할 때는 당연히 자리수도 하나씩 늘어나고 1099까지 두 자리의 수를 추가할때는 2자리가 늘어난다. 주어진 N이 4자리의 수 1200라는 수라면 999까지는 (9-1+1)*1 + (99 - 10 +1) * 2 + (999-100+1)*3 (1200-1000+1)*4로 자리수를 구할 수 있다. Code import sys input = sys.stdin.readline num = input().rstrip() n = len(num) num = int(num) total = 0 for i i..
Link : https://www.acmicpc.net/problem/1316 Note 첫 번째 풀이는 스택을 이용해서 풀이했다. 입력 된 문자를 선형 탐색하면서 연속적으로 같은 값이 나오면 스택에 넣어주고 다른 값이 나올 때 기존 스택을 비워주고 다시 스택에 넣는다. 이때 스택에 넣을 때 선형탐색에서 최초 등장 문자의 경우 등장여부를 체크한다. 그리고 다시 선형탐색하는데 이번 문자가 기존에 나왔던 문자라면 그룹단어가 아니다. 두 번째 풀이는 슬라이싱을 활용해서 풀이했다. 첫 번째와 마찬가지고 선형탐색하는데 현재 인덱스를 i라고 할 때 i번째 문자와 i+1번째 문자를 비교한다. 비교하면서 두 문자가 서로 다를 경우 i번 째 인덱스가 이후의 또 등장하는지 체크해서 등장하면 그룹문자가 아니다. Code im..
Link : https://www.acmicpc.net/problem/1475 Note 첫 번째 풀이 선형적으로 입력된 숫자 하나하나에 대해 사용된 플라스틱 숫자 개수를 카운트 해준다. 사용된 숫자 개수는 플라스틱 숫자를 꺼낸 박스의 번호를 의미한다. 박스는 1번부터 순서대로 사용한다. 단, 6, 9의 경우, 6일때는 9를 대신 사용할 수 있는지 9일 때는 6을 대신 사용할 수 있는지 체크해서 사용할 수 있다면 대체 숫자를 카운트해준다. 플라스틱 숫자 사용 개수가 가장 마지막의 사용한 박스번호라는 점을 이용하면 대체 숫자 사용여부를 체크할 수 있는데 현재 체크할 숫자가 6이라면 6번 숫자를 쓰기위해 최근에 사용한 박스번호와 9번숫자를 쓰기위해 최근에 사용한 박스번호를 비교해서 9를 위한 박스번호가 더 작..
Link : https://www.acmicpc.net/problem/2941 Note 오늘 프로그래머스 인턴 코딩테스트에서 나의 기본적인 구현실력이 부족함을 느껴서 구현문제를 풀어보기 위해 풀어본 문제. 역시나 구현의 약점이 들어났다. 처음부터 틀렸다. 최초 코드는 아래와 같은데 반례가 존재한다. 리스트에 넣어준 특수한 크로아디아 문자마다 입력으로 주어진 문자에서 개수를 세어주고 공백값으로 바꾸어 주었다. 그리고 마지막에 남은 문자에 대해서 길이를 구해서 전체 문자들의 개수를 구하려고 했다. 그런데 원래 nc=j 문자의 경우 c= 문자를 제거해주면 nj로 마뀌고 이경우 n과 j는 개별 문자로 임에도 nj 특수 문자로 개산이 되는 오류가 발생한다. 이 경우 개선하려면 특수 문자가 나오는 경우 *같은 문제..
Link : https://www.acmicpc.net/problem/1002 Note 성급하게 문제를 읽고 수도코드를 설계한 과정에서 실수가 많이 있었다. 두 원간의 교점문제라는 점은 파악했지만, 원의 교점이 생기는 경우를 분류할 때 분류과정에서 명확한 분류를 하지 못했다. 코드 중심의 최초 분류는 원의 중심인 두 점이 같을 때와 다를 때로 구분하고(원의 중심 두 점사이의 거리가 0일 때와 아닐때), 각각의 경우에 대해서 한점에서 만날 때 두점에서 만날 때, 만나지 않을 때, 겹칠 때를 나누어서 생각했다. 좋은 분류법은 아니였다. 이거는 코드 중심의 분류법에서는 좋지만 코드는 어디까지나 현실세계를 모방한 모델링이 제대로 되었을 때 의미가 있는 법이다. 다시 문제를 풀었을 때는 코드가 아닌 현실중심으로 ..
Link : https://www.acmicpc.net/problem/16198 Note 문제를 처음에 접근했을 당시에는 예시 입출력들을 가지고 규칙을 찾아본 결과, 그리디 과정으로 규칙이 찾아져서 코드를 제출했더니 틀렸다. 내가 처음에 풀이한 그리디 과정은 문제의 조건에 따라 i 구슬을 제거할때 i-1,i+1의 에너지 구슬로 모은 에너지 값이 최대가 되는 구슬로 정하였다. 첫 번째 예시의 경우 [1,2,3,4]에서 3을 골랐을때 8(2*4)가 가장 크기 때문에 3을 제거해주고 남은 2를 제거해줄 때 에너지는 4가 되어 총 에너지 합은 12가 된다. [100,2,1,3,100]의 경우 100(2) (에너지(제거숫자)), 6(1), 100(3)에서 큰 값 100이 같은 경우 제거 숫자는 작은 경우, [10..