본문 바로가기

프로그래밍/알고리즘 문제풀이32

[프로그래머스] [kotlin] 위장 //fun main() { // println( // solution( // arrayOf( // arrayOf("yellowhat", "face"), // arrayOf("bluesunglasses", "face"), // arrayOf("green_turban", "face") // ) // ) // ) //} fun solution(clothes: Array): Int { var answer = 1 val mmap = mutableMapOf() clothes.forEach { mmap[it[1]] = mmap.getOrDefault(it[1], 0) + 1 } mmap.keys.forEach { answer *= (mmap[it]!! + 1) } return answer - 1 } fun solut.. 2022. 2. 24.
[프로그래머스] [kotlin] 괄호 회전하기 import java.util.* // //fun main() { // print(solution("([{)}]")) //} var deque: MutableList = mutableListOf() fun solution(s: String): Int { var answer: Int = 0 if (s.length == 1) return 0 for (i in s.indices) { deque.add(s[i]) } for (i in s.indices) { rotate() if (isRight()) answer++ } return answer } fun rotate() { deque.add(deque.first()) deque.removeAt(0) } fun isRight(): Boolean { val stac.. 2022. 2. 24.
[백준][kotlin] 11655번 ROT13 문제 ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다. 예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"가 된다. ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 된다. 앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"가 된다. ROT13은 알파벳 대문자와 소문자에만 적용할 수 있다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다. 예를 들어, "One is 1"을 ROT13으로 암호화하면 "Bar vf 1"이 된다. 문자열이 주어졌을 때, "ROT13"으로 암호.. 2022. 2. 21.
[백준][kotlin] 4949번 균형잡힌 세상 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 51598 17026 13477 32.471% 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 .. 2022. 2. 15.
[백준][kotlin] 2775번 부녀회장이 될테야 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 55258 31041 26777 57.035% 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산.. 2022. 2. 15.
[백준] [kotlin] 10989번 수 정렬하기 3 5 초 (하단 참고) 8 MB (하단 참고) 147080 33532 24898 23.350% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 1 1 2 2 3 3 4 5 5 7 -- 1. bufferedReader, bufferedWriter 를 사용한다. 2. IntArray를 사용한다. (Array, List, ... => X) fun main().. 2022. 2. 14.
[백준] [c++] 1027번 고층 건물 // // main.cpp // acm // // Created by Nathan on 2020/09/21. // #include #include using namespace std; int main(int argc, const char * argv[]) { vector vec; int n; cin>>n; vector num; for(int i = 0; i >t; vec.push_back(t); num.push_back(0); } for(int i = 0; i < n; i++) { long double comp = -9999999999.0; for (int j = i + 1; j < n; j++) { long double t = (double)((double)(v.. 2021. 7. 10.
캔디크러시사가 알고리즘 문제풀이 (19년_에스원 코딩교육 숙제) 책임님께서 내주신 숙제^_^ (8/21, 수요일까지) ​ 명환이와 진엽이는 캔디크러시사가 게임으로 저녁 내기를 하려고한다. 내기를 도와줄 게임을 만들어보자^^ ​ 게임 규칙은 이러하다. 1. 똑같은 캔디 4개가 모여 사각형을 이루면, 없어지는 동시에 1점을 획득한다. 예) AA AA *4개 이상의 캔디가 여러 개 있을 시, 위->아래, 왼->오 순서로 없어진다. 예) AA _ _ AA -> _ _ AA AA AAA _ _A AAA -> _ _A ​ 2. 캔디가 없어진 자리를 위쪽 캔디가 내려와 채운다. 예) DDDDDDDDDD D DDDDDDD GGGGGGGGGG G GGGGGGG AAAAAAAAAA -> ADDAAAAAAA CCCCCCCCCC CGGCCCCCCC BCCBBBBBBBB BAABBBBBBB.. 2020. 12. 23.
ICT 인턴십 코딩테스트 후기 서류 접수 후 코딩테스트를 봤다. 플랫폼은 HackerRank, 문제는 총 5문제, 시간은 12시간(!)이다.문제가 영어지만 푸는데는 지장 없었다. 다 푸는데 5시간정도 걸린듯하다. 파이썬으로 다 할려했는데 1, 2번 풀고나서 3번부터 뭔가 손에 안익어서 c++로 갈아탐 1. Order Check (난이도: 하) 2. Two Strings (난이도: 하) 3. Connected Groups (난이도: 중) => 백준에 비슷한 문제 풀었던 기억이... dfs로 sol => 입력 들어오는게 int가 아니라 char라;;; 삽질ㅋㅋ 중간쯤에 1을 '1'로 수정 4. Stock Profits (난이도: 중상) => hash map 사용하여 sol 5. Connected Sum (난이도: 중) => 3번과 비슷한.. 2020. 8. 6.
[백준] [c++] 1655번 가운데를 말해요 문제 수빈이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 수빈이가 정수를 하나씩 외칠때마다 동생은 지금까지 수빈이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 수빈이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다. 예를 들어 수빈이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1, 2, 2, 2, 2, 5를 차례대로 말해야 한다. 수빈이가 외치는 수가 주어졌을 때, 동생이 말해야 하는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로.. 2020. 8. 6.