본문 바로가기

분류 전체보기

(25)
[Beakjoon Online Judge] 1019 - 책 페이지 I 문제 소개 문제 지민이는 전체 페이지의 수가 N인 책이 하나 있다. 첫 페이지는 1 페이지이고, 마지막 페이지는 N 페이지이다. 각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자. 입력 첫째 줄에 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. II 문제 풀이 얼핏봐서는 정말 간단해보이는 문제였다. 문제만 따라간다면 그냥 N까지 for문 돌리면 끝나겠네 싶었다. 그렇게 1달전에 무참히 패배했다. 코드 길이를 보면 알 수 있듯, 코드를 전혀 다르게 세 번 짰었다. for문을 N까지 돌리면서, 그 숫자의 자리수를 계산해 하나씩 더해주는..
[Programmers] 큰 수 만들기(C++) I 문제 소개 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 - number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. - k는 1 이상 number의 자릿수 미만인 자연수입니다. II 문제 풀이 문제가 상당히 쉬워보인다. ..
[Programmers] 전화번호 목록(C++) I 문제 소개 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. - 구조대 : 119 - 박준영 : 97 674 223 - 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 - phone_book의 길이는 1 이상 1,000,000 이하입니다. - 각 전화번호의 길이는 1 이상 20 이하입니다. II 문제 풀이 문제를 해석하..
[Programmers] 체육복(C++) I 문제 소개 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solu..
[Beakjoon Online Judge] 1541 - 잃어버린 괄호(C++) I 문제 소개 문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력 첫째 줄에 정답을 출력한다. II 문제 풀이 지난번 '동전0' 문제에 이어서 탐욕법(그리디 알고리즘)을 사용하는 문..
[Beakjoon Online Judge] 11047- 동전 0(C++) I 문제 소개 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. II 문제 풀이 사실 너무 간단해서 뭐라고 붙일 문제는 아니다. 다만 앞으로 탐욕법과 관련된 문제를 풀어보려해서 가장 기초적인 문제를 찾아 풀어보았다...
[Programmers] 괄호 변환(C++) I 문제 소개 문제 설명 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 콘은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 괄..
[IT] ipTIME U2500 유선랜카드 리뷰 과제의 늪에 빠져있는 대학생들의 단짝친구 노트북은, 처음에는 사양이 신경쓰였을지는 몰라도 쓰다보면(가방에 넣고 다니다보면) 무게가 가벼운게 좋은거구나라고 뼈저리게 느낄 것이다. 우리가 흔히 알고있는 LG의 Gram이나 삼성의 Always같은 노트북을 슬림형 노트북이라 부르는데, 무게와 부피를 줄이고자 CD롬을 비롯한 HDD, 시스템 쿨러 등을 제거한 게 특징이다. 필자가 사용하고 있는 노트북도 슬림형 노트북인데, 대부분의 슬림형 노트북이 그렇듯 랜포트마저 제거해 나와서 반강제로 무선 인터넷을 사용해야했다. 무선 인터넷이 편리하고 속도도 그렇게 느리다고 할 수 없으나, 안정성이 떨어지는 게 큰 단점이라고 할 수 있다. 최근에 불편함을 느끼면서 유선 랜카드를 구입하게 되었다. 공유기명가 ipTIME의 U25..