https://www.acmicpc.net/problem/10995

 

10995번: 별 찍기 - 20

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

기초적인 별찍기 문제 중 하나 

 

딱히 파악이 어려운 규칙은 없다.

 

'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글

백준 16212  (0) 2019.12.31
백준 16433  (0) 2019.12.31
백준 15947  (0) 2019.12.30
백준 1654  (0) 2019.12.29
백준 10818  (0) 2019.12.25

https://www.acmicpc.net/problem/15947

 

15947번: 아기 석환 뚜루루 뚜루

첫 번째 줄에 석환이가 N번째로 부를 단어를 출력한다. 여기서 단어란 가사 중 공백으로 구분되는 연속된 알파벳 소문자열을 뜻한다. 단, 출력할 단어가 “tururu...ru”일 때, “ru”가 k(k ≥ 5)번 반복되면 “tu+ru*k”와 같이 출력한다.

www.acmicpc.net

몇가지 조건들만 맞춰서 출력하도록 하면된다.

 

14개의 단어들이 한 단위로 구성되는데 숫자도 14개로 고정이라서 쉽다.

 

 

'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글

백준 16433  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 1654  (0) 2019.12.29
백준 10818  (0) 2019.12.25
백준 10757 큰 수 A+B  (0) 2019.11.24

https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 231-1보다 작거나 같은 자연수이다.

www.acmicpc.net

 

요즘 프로젝트로 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

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

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

추상화 데이터 타입 그런 자료구조를 왜 만들고 왜 필요할까?

 

생각해보면 스케쥴러를 짜는데

 

큐(선입선출,FIF0)를 사용하지 않고 배열을 이용한다면....

 

직접 인덱스(index)관리를 일일히 해주어야 한다는 소리인데

 

규모가 커지면 이건 정말 쉽지 않은 문제이다.

 

하지만 추상화데이터타입을 만들고 그를 활용한다면 단지 pop과 푸쉬만 이용하면

 

따로 직접 index 를 관리 하지 않아도 된다

 

추상화데이터타입을 이용하는 이유 중 하나는 **인덱스 관리의 어려움** 이 있지 않을까?

 

스택에 함수 call과 관련된 정보를 담을 때도 스택이라는 자료구조를 이용하지 않으면 생각만 해도 끔찍하다...

 

들은 내용중 기억에 남기고 싶은 내용이라 정확하지 않을 수 있지만 기록을 해놓습니다...

'학부생 공부 > 생각들' 카테고리의 다른 글

정적영역, 스택영역, 그리고 힙 영역  (0) 2019.11.09
go to문? 왜 남아 있지?  (0) 2019.11.06

https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

www.acmicpc.net

- 아무 생각 없이 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

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

- 시간제한은 널널, 반면 메모리 제한이 타이트한 문제이다.

- 즉 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

https://www.acmicpc.net/problem/10773

 

10773번: 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤

www.acmicpc.net

- 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

+ Recent posts