BOJ 11

BOJ 백준 C++ 1759번 암호만들기

문제 링크 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net DFS를 활용하는 문제, 우선 문자들을 모두 받아, 오름차순으로 정렬한 후에 DFS를 시작한다. Vector의 사이즈가 L에 도달할 때만 출력에 대해 검증(자음 2개이상, 모음 1개 이상)하고, 출력한다. 다음 재귀는 +1을 해서 호출한다. #include #include #include #include using namespace std; int L, C; vector vec; vector tmpAns; void DFS(int depth){ int val..

BOJ 2024.02.13

2022 KAKAO TECH INTERNSHIP : 성격 유형 검사하기

7점을 기준으로 4점보다 높고, 낮음에 따라 해당 성격 유형에 주어지는 점수가 달라져야 한다. defaultdict를 import해서 int형으로 선언하고, 값이 같을 때 알파벳 순으로 나오는 것은 순서가 빠른 알파벳 >= 그 다음 순서 알파벳으로 조건을 두면 순서가 빠른 알파벳이 answer에 더해진다. from collections import defaultdict def solution(survey, choices): answer = '' n = len(survey) myDict = defaultdict(int) for i in range(n): determine = choices[i] if(determine == 4) : continue elif(determine < 4) : # 1,2,3 myD..

BOJ 2023.11.13

2023 KAKAO BLIND RECRUITMENT : 개인정보 수집 유효기간

dictionary를 사용하여 해당 유효기간의 달 수를 저장한 후, 오늘을 모두 날로 환산하고, 지금의 date와 비교하고 아직 유효한 경우만 answer에 append하여 문제를 해결했다. from collections import defaultdict def solution(today, terms, privacies): dict = {} for i in terms: type, valMonth = i.split(" ") dict[type] = valMonth cnt = 0 answer = [] todayDate = today.split(".") todayTotalDays = (int(todayDate[0]) * 12 *28) + (int(todayDate[1]) * 28) + int(todayDate[..

BOJ 2023.11.08

BOJ 1157번 단어공부 파이썬

1. 문제링크 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 2. 문제 접근 가장 많이 사용된 알파벳을 대소문자 구분 없이 알아내야하기 때문에 우선 입력된 문자들을 모두 대문자 혹은 소문자로 만들어서 빈도 수를 확인하면 되지 않을까? 만약 빈도 수가 높은 알파벳이 여러개라면 ?을 출력하면 된다. 그러면 중복 검사를 하는 조건 문도 필요할 것 같다. 우선, 입력값을 받은 후에 모든 문자를 대문자로 만든다. 대문자로 만드는 이유는 나중에 예제 출력에서 나오는 문자열이 모두 대문자이기에... 그 뒤에, set 함수를 사용하여 리스트에 중복값을 제..

BOJ 2022.03.17

백준 9012번 괄호 자바 풀이

1. 문제링크 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 2. 문제 접근 괄호 문자열에 대한 개념에 대해 이해해야한다. 어렵게 생각할 필요가 전혀 없다. VPS는 괄호의 쌍이 일치하면 되는 것이다. 문제에서 예를 든 것처럼 (())()이나 ((())) 처럼 각자의 괄호 쌍이 일치하면 되는 것으로 이해하면 된다. 그 반대인 경우에는 VPS가 아니므로 NO를 출력하면 된다. 3. 문제 풀이 우선 scanner와 stack으로 푸는 방법, bufferedreader와 stack으..

BOJ 2022.01.19

BOJ 17608번 막대기

1. 문제링크 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 2. 문제 이해 우선 제일 오른쪽 막대의 길이를 기준으로 왼쪽 처음까지 배열을 돌며 비교해야겠다는 생각이 든다. 그래서 만약에 제일 왼쪽 막대보다 길이가 길면 전체 카운트에 +1을 해주면 될 것 같다. 보니까 자료구조 스택 문제네... 제일 마지막에 있는 요소를 차례로 빼가면서 비교하고, 만약에 제일 큰 요소보다 큰 새로운 요소라면 카운트를 해주고 제일 높은 막대기로 변경시켜주면 된다. 3. 문제 풀이 # 임의의 개수의 정수를 n줄을 입력받아서 리스트에 ..

BOJ 2022.01.13

백준 2884번 알람시계 파이썬

1. 문제링크 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 2. 문제이해 주어진 수가 있으면 45분 전으로 돌려주기만 하면 된다. 다만 24시간 표현 + 시간 계산이므로 이에 맞는 연산 코드를 작성해주어야 한다. 하루의 시작은 0:0이고 끝은 23:59라는 것을 명심한다. 3. 문제 풀이 우선 시간과 분을 입력받는다. 아래와 같은 방법으로 공백을 기준으로 두 가지 int 자료형으로 입력 값을 받을 수 있다. hour, min = map(int, input().split()) 그 뒤에 분이 45분을 넘지 않으면 그냥..

BOJ 2022.01.13

BOJ 1110번 더하기 사이클 파이썬

1. 문제 링크 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 2. 문제 이해 우선, 입력 받은 수가 10이상인지 아닌지부터 판단해야한다. 만약 10보다 작으면 0을 붙여준 상태로 시작해야한다. 그 다음에는 각 자리의 수를 더한 뒤에 나온 값의 가장 오른쪽 한 자리 숫자와 더하기 전 결과의 일의 자리 숫자를 이용하여 또 다른 숫자를 만든다. 그 과정을 계속 반복하다가 처음의 입력한 수와 같게(10미만의 숫자인 경우는 0을 붙여준 숫자가 처음 입력한 수라고 가정) 나온다면 반복한 과정의 횟수를 ..

BOJ 2022.01.12

BOJ 1157 단어공부 파이썬

1) 문제 링크 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 2) 문제 접근 가장 많이 사용된 알파벳을 대소문자 구분 없이 알아내야하기 때문에 우선 입력된 문자들을 모두 대문자 혹은 소문자로 만들어서 빈도 수를 확인하면 되지 않을까? 만약 빈도 수가 높은 알파벳이 여러개라면 ?을 출력하면 된다. 그러면 중복 검사를 하는 조건 문도 필요할 것 같다. 우선, 입력값을 받은 후에 모든 문자를 대문자로 만든다. 대문자로 만드는 이유는 나중에 예제 출력에서 나오는 문자열이 모두 대문자이기에... 그 뒤에, set 함수를 사용하여 리스트에 중복값을 ..

BOJ 2022.01.12