1920번 수 찾기
1회 : 성공
- stdlib헤더에 정의되어있는 qsort()함수로 정렬 후 이진탐색으로 구현
qsort(void *base, size_t nel, size_t width, int (*compar)(const void *, const void *))
5639번 이진검색트리
1회 : 성공
- 연결리스트를 이용한 이진탐색트리로 구현
- 문제에 입력 종결조건이 따로 주어지지 않아
while (scanf != EOF)
로 입력받음 - 후위순회 (postorder traversal) 결과에 맞추어 출력하기 위해 재귀함수 사용
1991번 트리 순회
1회 : 성공
- 연결리스트를 이용한 이진트리로 구현
- scanf 와 scanf 사이에 개행이 버퍼에 들어가 오류가 발생하는 것을 막기위해
getchar()
사용
1927번 최소 힙
1회 : 성공
- 배열을 이용한 최소 힙으로 구현
11279번 최대 힙
1회 : 성공
- 배열을 이용한 최소 힙으로 구현
11286번 절대값 힙
1회 : 실패
2회 : 시간초과
3회 : 실패
4회 : 성공
- 배열을 이용한 절대값 힙으로 구현
- push, pop에서 정렬조건을 정확하게 표현하지 못해서 여러번 실패
- 절대값이 다를 경우: abs(heap[i/2]) < abs(heap[i]) 되도록 정렬
- 절대값이 같을 경우: heap[i/2] < heap[i] 되도록 정렬
14425번 문자열 집합
1회 : 실패
2회 : 실패
3회 : 성공
- 연결리스트를 이용한 트라이로 구현
- 이중 반복문 내에서 break가 되어야 할 부분에서 continue를 잘못 사용함
4358번 생태학
1회 : 출력초과
2회 : 실패
3회 : 성공
- 연결리스트를 이용한 트라이로 구현
- 테스트를 위해 넣어둔
printf("\n")
로 출력초과 발생 - white space를 포함해서 개행까지 하나의 문자열로 받기 위해
fgets
사용 str[i] != '\0'
이 아닌str[i] != '\n'
로 문자열 검사- 문제의 '사전순으로 출력'은 아스키코드 순서로 하면되는데 굳이 쪼개다가 잘못 쪼개서 틀림
5052번 전화번호 목록
1회 : 실패
2회 : 실패
3회 : 성공
- 연결리스트를 이용한 트라이(10진트리)로 구현
- consistent 조건
- nbr을 검사하며 거쳐가는 노드 중에 finish==true인 노드가 있을 경우
- nbr의 마지막 노드인데 그 노드의 child가 있을 경우
- 최초 입력되는 테스트 횟수만큼 while문을 돌면서 root를 초기화하지 않고 그대로 사용해서 두번째 테스트부터 결과가 다르게 나오는 문제가 있었음
1717번 집합의 표현
1회 : 시간초과
2-6회 : 런타임에러
7회 : 성공
- 연결리스트를 이용한 유니온파인드로 구현
- find함수에서 경로최적화를 하지않은 문제로 시간초과 발생
- 최대 n + 1개의 집합에서 배열의 크기를
n + 1
이 아닌n
만큼만 할당한 문제와init[a - 1]
과 같이 배열의 index를 잘못 참조해서 런타임 오류발생
4195번 친구 네트워크
1-4회 : 시간초과
5-6회 : 실패
7회 : 성공
- 유니온파인드로 구현
- 시간초과 해결하기 위해 이름(string)탐색에 트라이 적용
- 67행에서 대문자와 소문자와 같은 int값으로 잘못 반환(
return (c - 'A');
해서 jinny와 Jinny가 같은 값으로 인식되는 문제가 있었음