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

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

www.acmicpc.net

그냥 모든 경우의 수를 입력 받은 후 (듣지 못하는 사람) 을 보지 못하는 사람을 입력받을 때 

 

듣지 못하는 사람 전체와 비교를 하면 시간 초과가 뜹니다 (n,m이 무려 500,000이기 때문에 )

 

그래서 오랜만에 binarysearch를 직접 구현하여 문제를 해결 하였습니다.

 

그리고 문제에서 사전 순 배열을 원하였으므로 중간에 sort를 사용하시면 됩니다.

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

백준 1059  (0) 2019.12.31
백준 16212  (0) 2019.12.31
백준 16433  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 15947  (0) 2019.12.30

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

 

1059번: 수2

첫째 줄에 Lucky Set에 포함된 숫자의 개수 L이 주어진다. 둘째 줄에는 L개의 수가 주어진다. 이 수는 1,000보다 작거나 같은 자연수이고, L은 50보다 작거나 같은 자연수이다. 그리고 중복되지 않는다. 마지막 줄에는 N이 주어진다. N은 Lucky Set에서 가장 큰 수보다 작거나 같은 자연수이다.

www.acmicpc.net

어느정도의 규칙을 파악하는 건데

 

생각보다 마지막 출력에서 식을 잘못 세워 여러번 틀렸다.

 

max, min 을 설정해두고 그려가면서 하면 편하고

 

N은 B보다 커질 경우는 생각할 필요 없다(조건상)

 

N이 럭키셋의 모든 수들보다 작은 (즉 N이 직선상에서 가장 왼쪽에 있는경우)

 

를 함께 생각해서 식을 세워주면 된다.

 

그리고 N이 럭키셋에 있는 수 중 하나와 같게 된다면 UNLUCKY셋을 하나도 구성 할 수 없으므로

 

0을 출력하고 리턴하면 된다.

 

 

 

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

백준 1764 : 듣보잡  (0) 2020.03.26
백준 16212  (0) 2019.12.31
백준 16433  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 15947  (0) 2019.12.30

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

 

16212번: 정열적인 정렬

형준이는 수열을 하나 가지고 있다. 형준이는 수열을 정열적으로 정렬해보려 한다. 과연, 정렬할 수 있을까?

www.acmicpc.net

 

기본적인 정렬을 할줄 아는지 물어보기 위한 문제 인듯 싶네요

 

c++에서 정렬은 

 

sort(arr.begin(),arr.end()) 이렇게 하고

 

내림차순, 오름 차순이냐에 따라 greater<int> () 를 파라미터로 추가 해주느냐 마느냐 결정하시면 될 듯 합니다.

 

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

백준 1764 : 듣보잡  (0) 2020.03.26
백준 1059  (0) 2019.12.31
백준 16433  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 15947  (0) 2019.12.30

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

 

16433번: 주디와 당근농장

첫 번째 줄에 N, R, C (2 ≤ N ≤ 99, 1 ≤ R, C ≤ N) 가 주어집니다.

www.acmicpc.net

2*2 칸만 그려보면 

 

모든 결과는 체스판 처럼 나오기 때문에 

 

두가지로 분류하면 됩니다.

 

여러 방법이 있겠지만 저는 R+C 가 홀수일 때 짝수일 때로 나누어 출력하였습니다.

 

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

백준 1059  (0) 2019.12.31
백준 16212  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 15947  (0) 2019.12.30
백준 1654  (0) 2019.12.29

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

+ Recent posts