학부생 공부
- 백준 10995 2019.12.30
- 백준 15947 2019.12.30
- 백준 1654 2019.12.29
- 백준 10818 2019.12.25
- abstract data type 어떤 이유? 2019.12.01
- 백준 10757 큰 수 A+B 2019.11.24
- 백준 10989 수정렬하기3 2019.11.16
- 백준 10773 제로 2019.11.16
백준 10995
백준 15947
https://www.acmicpc.net/problem/15947
몇가지 조건들만 맞춰서 출력하도록 하면된다.
14개의 단어들이 한 단위로 구성되는데 숫자도 14개로 고정이라서 쉽다.
백준 1654
https://www.acmicpc.net/problem/1654
요즘 프로젝트로 biginteger를 다루는 자료형을 만들었었는데
이것의 부작용인지..... 문제를 처음 봤을때 조건들의 숫자가 그렇게 크지 않다고 생각하고 아무렇게나 접근했었는데
위와 같이 큰 수부터 1씩 감소 시켜주면서 잘라서 개수를 비교하여 처음 N 과 같아질때의 수를 출력하는 식으로 했더니?
채점중 2퍼인가 에서 시간초과...5퍼인가?.....
꽤 채점이 되다가 시간초과가 떳으면 이 코드에서 시간을 줄여보고자 생각을 했을 수도 있겠지만
터무늬 없어서 방법을 바꿔야 한다는 것을 깨닫고 문제 조건을 다시 파악했다....
무엇이 좋을까 하다가 떠오른건 "이분탐색"
코드의 디테일 까지는 잘 생각이 안나서 짜면서 신경 써야되는 부분이 있지만
역시 개념자체는 배워놓으면 잘 까먹지 않고 생각 나는 것 같아서 혼자 뿌듯....
이분 탐색으로 짠 코드는 다음과 같다.
간단해서 따로 설명할 것은 없어보이고
길이는 1이상 이기때문에 처음 bottom값을 0으로 설정하면 채점중 런타임 에러가 나타난다. <주의>
'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글
백준 10995 (0) | 2019.12.30 |
---|---|
백준 15947 (0) | 2019.12.30 |
백준 10818 (0) | 2019.12.25 |
백준 10757 큰 수 A+B (0) | 2019.11.24 |
백준 10989 수정렬하기3 (0) | 2019.11.16 |
백준 10818
https://www.acmicpc.net/problem/10818
1<=N<=1000000
입력의 모든 정수는 -1000000 보다 크거나 같고 1000000보다 작거나 같은 정수이다
즉 일단 입력은 int 형으로 충분히 처리 가능.
출력을 보면 최대 최소값 하나씩만 뽑아내면 되기 때문에 입력을 받은 후 정렬같은 것 하지말고 비교만 해서
최소 최대 값을 저장, 갱신 했다.
'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글
백준 15947 (0) | 2019.12.30 |
---|---|
백준 1654 (0) | 2019.12.29 |
백준 10757 큰 수 A+B (0) | 2019.11.24 |
백준 10989 수정렬하기3 (0) | 2019.11.16 |
백준 10773 제로 (0) | 2019.11.16 |
abstract data type 어떤 이유?
추상화 데이터 타입 그런 자료구조를 왜 만들고 왜 필요할까?
생각해보면 스케쥴러를 짜는데
큐(선입선출,FIF0)를 사용하지 않고 배열을 이용한다면....
직접 인덱스(index)관리를 일일히 해주어야 한다는 소리인데
규모가 커지면 이건 정말 쉽지 않은 문제이다.
하지만 추상화데이터타입을 만들고 그를 활용한다면 단지 pop과 푸쉬만 이용하면
따로 직접 index 를 관리 하지 않아도 된다
추상화데이터타입을 이용하는 이유 중 하나는 **인덱스 관리의 어려움** 이 있지 않을까?
스택에 함수 call과 관련된 정보를 담을 때도 스택이라는 자료구조를 이용하지 않으면 생각만 해도 끔찍하다...
들은 내용중 기억에 남기고 싶은 내용이라 정확하지 않을 수 있지만 기록을 해놓습니다...
'학부생 공부 > 생각들' 카테고리의 다른 글
정적영역, 스택영역, 그리고 힙 영역 (0) | 2019.11.09 |
---|---|
go to문? 왜 남아 있지? (0) | 2019.11.06 |
백준 10757 큰 수 A+B
https://www.acmicpc.net/problem/10757
- 아무 생각 없이 long long (int)로 제출 했다가 당연히 안됨!.
- 하나의 자료형에 담을 수 없는 큰 수 들의 입력, 출력은 더더욱 더!
- 문자열을 이용하자!
- 이런 생각 후의 단계는 단순 했습니다.
- 1단계 : 자릿수 맞추기
3200 + 10 을 그냥 문자열에 넣고 계산하면
3 2 0 0
+ 1 0
이 되므로 원하는 결과가 안나온다.
자릿수를 맞춰 앞쪽에 0을 넣어 0 0 1 0 을 만들어주자.
- 2단계 : 더한후 carry값을 계산하자!
- 두 단계만 생각하면 간단했습니다.
/수정/
생각해 봤는데 오류가 있는데 이게 결과를 int배열로 잡아서
출력에는 이상이 없지만 result[0]은 carry 처리가 제대로 되지 않습니다.
즉 이 문제에서는 상관없이 결과는 잘 나오지만 다른 i번째의 출력과 일관성이 없는거 같습니다.
잘 못 짠듯...... 뒤집어서 다 계산하고 캐리까지 계산하고 마지막에 뒤집을까....
'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글
백준 1654 (0) | 2019.12.29 |
---|---|
백준 10818 (0) | 2019.12.25 |
백준 10989 수정렬하기3 (0) | 2019.11.16 |
백준 10773 제로 (0) | 2019.11.16 |
백준 1874 스택수열 (0) | 2019.11.14 |
백준 10989 수정렬하기3
https://www.acmicpc.net/problem/10989
- 시간제한은 널널, 반면 메모리 제한이 타이트한 문제이다.
- 즉 n의 숫자가 매우 크므로 이걸 배열로 받아서 정렬을 하면 메모리초과가 발생한다는 뜻
- 그래서 다른 조건을 찾아봤다.
- 눈에 들어온 건 # 이 수는 10,000보다 작거나 같은 자연수이다. #
- 즉 배열에다가 입력 숫자들을 넣는것이 아니라
- 입력숫자들을 배열의 index라고 생각을하고 그 입력숫자가 들어올때 마다 arr[입력숫자]의 값을 1증가시켜주는 식으로
- 체크가 가능하다.
- 그리고 마지막 출력을 index순서대로 하면서 그 배열[index]의 값만큼 반복 출력을 하면 된다.
'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글
백준 10818 (0) | 2019.12.25 |
---|---|
백준 10757 큰 수 A+B (0) | 2019.11.24 |
백준 10773 제로 (0) | 2019.11.16 |
백준 1874 스택수열 (0) | 2019.11.14 |
백준 2292 벌집 (0) | 2019.11.13 |
백준 10773 제로
https://www.acmicpc.net/problem/10773
- 0이 들어 올 경우 이전의 받았던 숫자를 하나 지운다.
- 문제 자체에
#정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.#
- 이러한 조건이 있어서 따로 예외처리를 할 필요도 없었다.
- 스택을 써도 좋고 저는 그냥 벡터로 했습니다.
'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글
백준 10757 큰 수 A+B (0) | 2019.11.24 |
---|---|
백준 10989 수정렬하기3 (0) | 2019.11.16 |
백준 1874 스택수열 (0) | 2019.11.14 |
백준 2292 벌집 (0) | 2019.11.13 |
백준 11650 좌표정렬하기 (0) | 2019.11.13 |