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

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

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

- 스택 의 LIFO 개념을 인지하기 위한? 문제 인 것 같다.

- 스택에는 오름차순으로 들어간다는 점.

- 저는 원하는 결과 수열을 처음에 입력 받아서 큐에 넣어서 하나씩 비교 하였습니다.

- 스택에 넣는 과정에서 큐의 front에 있는 값과 비교를 해서 같지 않으면 스택에 넣고

- 같으면 스택에 넣었다가 뺀다 (한번은 들어갔다 나와야함.)

- 그 후 뺐을때 queue에서도 pop을 해준다.

- 그리고 그 상태에서 stack.top() 값과 queue.front()의 값이 같다면 또 빼주어야 한다 스택 큐 모두에서

- 그래서 for문을 모두 돈 후에 스택이 비어 있으면 수열이 제대로 완성이 될수 있는 것이므로 성공이고

- 그렇지 않다면 스택을 이용해서 원하는 수열을 만들 수가 없는 것이다.

- 그것을 구분하여 출력해주면 된다.( 안되는 경우에 +,-가 아닌 NO만 출력해야 하므로

- 반복문을 돌면서 출력을 해주면 안된다. 그래서 vector<bool>에 push,pop이 일어날 때 마다

- 차례대로 넣어놓고 마지막에 수열이 완성될 수 있는경우 이를 이용하여 +,-를 출력하였다.

- 자료구조는 자신이 필요하다 싶은, 그리고 더 효율적일 것 같은 자료구조를 선택하면 될거 같다.

- 저도 더 컴팩트하고 쉬운 방법은 없는 지 생각해보겠읍니다.

 

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

백준 10989 수정렬하기3  (0) 2019.11.16
백준 10773 제로  (0) 2019.11.16
백준 2292 벌집  (0) 2019.11.13
백준 11650 좌표정렬하기  (0) 2019.11.13
백준 2164 카드2  (0) 2019.11.13

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

www.acmicpc.net

- 육각형이 나름 힌트?.... 모양이 보고 숫자를 파악해 보니까

- 다음 칸으로 넘어갈수록 한변에서 하나의 숫자들이 더 더해지고 있었다.

- 즉 계차수열? ..... 느낌.

 

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

백준 10773 제로  (0) 2019.11.16
백준 1874 스택수열  (0) 2019.11.14
백준 11650 좌표정렬하기  (0) 2019.11.13
백준 2164 카드2  (0) 2019.11.13
백준 2839 설탕배달  (0) 2019.11.10

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

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

- 입력받은 점을 x좌표 우선비교 하고 출력( 같을 경우는 y좌표를 비교하여 순서대로 출력)

- 문제는 매우 간단한데 

- int형 vector array를 선언해서 (2차원 배열 느낌)

- 입력받은 x,y 를 arr[x].push_back(y) 를 하여 일단 x값 대로 for문을 돌다가

- size가 1 일경우 -> 그대로 출력[0]번째(arr[i][0])

- size가 2 이상이면 -> 그 vector array를 sort하여(y값 오름차순 정렬) 순서대로 출력

 

@@ 비효율적이다...... 더 컴팩트하게 짤 수있을텐데.. 생각해볼게요.... @@

 

 

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

백준 1874 스택수열  (0) 2019.11.14
백준 2292 벌집  (0) 2019.11.13
백준 2164 카드2  (0) 2019.11.13
백준 2839 설탕배달  (0) 2019.11.10
백준 15552 빠른입출력  (0) 2019.11.10

- 파이프 란 ?

 # 간단하게 말하자면 한 프로세스의 출력이 다른 프로세스의 입력으로 들어가서

    두개의 프로세스가 inter-communication 을 하는 것이다.

 # FIFO basis

 # half duplex ( full duplex를 굳이 하자면 가능 하기는 하지만 이를 권고)

    (보내는 쪽은 보내기만, 받는 쪽은 받기만)

 # 공통 부모인 프로세스나 친척들 끼리 파이프를 사용가능 (parent-child뿐만 아니라 child-child도 가능(공통조상에서        파이프를 열였을 경우))

 # 공통조상이 아닌 프로세스들 끼리 파이프와 같은 기능을 사용하고 싶을 때는 FIFO 를 이용

 #  #include<iostream>

     int pipe(int filedes[2]);

 # 프로세스가 파이프를 통해 read를 하려고 하는 경우

     -1. pipe is not empty : read를 하고 즉시 리턴 한다. (리턴값은 읽은 데이터의 바이트 수)

     -2. pipe is empty : read가 block된다. ( write를 통해서 들어올 때까지 기다림)

 # 프로세스가 파이프를 통해 write를 하려고 하는 경우

     -1. pipe is not full : 즉시 write하고 리턴한다.

     -2. pipe is full : 빈(여유)공간이 만들어 질때 까지 block(기다림)

 # 파이프의 한쪽이 closed(닫힌경우)

     -1 . (write 가 닫혔을 때) read의 경우 데이터 파일을 다 읽고 나면 0을 리턴한다.

     -2 . (read 가 닫혔을 때) write의 경우 write를 해도 read할 프로세스가 없다.

          커널이 SIGPIPE라는 시그널을 보낸다.(write를 실행한 프로세스에게)

                (default 값은 죽는것.)

          시그널을 무시하거나 잡아서(catch) 핸들러를 수행하거나 할경우 -1을 리턴하고

          errno을 EPIPE로 셋팅한다.

 

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

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리

www.acmicpc.net

- 문제에 주어진 조건만 파악 한다음 차근차근 따라가면 된다.

- 자료구조 는 여러가지를 사용해서 해결할 수 있을 것이다.

- 저는 큐 (FIFO)를 사용했습니다.

- 카드 덱을 위에서 부터 하나씩 꺼내고 다시 밑으로 넣고 함으로 큐가 적당할 것 이라고 생각해서 이용하였습니다.

 

 

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

백준 2292 벌집  (0) 2019.11.13
백준 11650 좌표정렬하기  (0) 2019.11.13
백준 2839 설탕배달  (0) 2019.11.10
백준 15552 빠른입출력  (0) 2019.11.10
백준 1085  (0) 2019.11.09

+ Recent posts