코딩테스트
[프로그래머스]오픈채팅방 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 풀이 HashMap을 사용해서 풀었음! 처음 채팅방에 들어오는 애는 put으로 추가 닉네임 바꾸는 애는 put으로 바꾸기 Enter랑 Leave인 애들 아이디 ArrayList에 저장해 놨다가 아이디 꺼내서 그 아이디에 맞는 닉네임 HashMap에서 찾아서 닉네임 반환해주기! 자세한건 주석으로! 코드 // 코딩테스트 연습 - 2019 KAKAO BLIND ..
[프로그래머스]카카오프렌즈 컬러링북 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이 백준으로 많이 풀어본 유형이긴 한데 별 생각없이 귀찮은 변수나 배열 등을 걍 다 static으로 때려박아서 결코 좋은 풀이는 아닌 것 같다 ,,, ㅎㅎㅎ 그리고 다 풀고 테케까지 다 맞았는데 틀리다고 나와서 질문하기 게시판 보니까 static 애들은 solution() 함수 안에서 초기화 해줘야 한다고 하더라??? 왜 그런지는 모름 암튼 그렇다고 함 ㅋㅋ..
[프로그래머스]뉴스 클러스터링 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 풀이 처음에 집합, 그니까 HashSet으로 문제를 풀려고 했는데 HashSet은 중복을 허용하지 않기 때문에 {aa, aa, aa}인 집합이 {aa}가 되어 버린다. 그래서 합집합, 교집합을 구하는데에 불편하다고 생각되어서 중간에 그냥 ArrayList로 바꿔서 풀었다. 처음에 toLowerCase()나 toUpperCase()로 문..
[백준]11000번 강의실 배정 - Java
문제 https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si { // (o1, o2): 오름차순으로 정렬한다 if (o1[0] == o2[0]) { return Integer.compare(o1[1], o..
[프로그래머스]완주하지 못한 선수 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 해시 문제라고 써있어서 그냥 해쉬로 쉽게 풀었다. 이제 // hashMap에 사람 추가 // 동명이인이 있을 수도 있으니 이미 있는 사람이면 원래 값에 +1 for (String name : participant) { hashMap.put(name, hashMap.getOrDefault(name, 0) + 1); } getOrDef..
[프로그래머스]가장 큰 수 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀이 처음엔 그냥 순열 문제인줄 알고 DFS로 풀려고 했는데 numbers의 길이가 10만이라 순열로 풀면 시간 초과나서 안되겠구나 싶었다,,, 그래서 정렬 문제라 해서 정렬로 풀려고 해봤는데 모르겠어서 해답을 찾아봤다 ㅠㅠㅠ 문자열(수)을 앞뒤로 이어 붙인 것 중에 큰 순서대로 정렬을 하면 ..
[프로그래머스]피로도 - Java
문제 https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 풀이 재귀를 활용한 DFS로 완전 탐색을 해줌! 조건에 맞으면(탐험하지 않은 던전이고, 최소 피로도보다 많은 피로도가 남아 있으면) 다음 단계로 넘겨줌 다음 단계로 넘기기 전에 방문 처리를 해주고 다음 단계를 갔다 오면 다시 방문 처리를 해제해줌! 재귀 함수의 깊이(depth)와 answer를 비교해서 최대값을 answer에 갱신해줌! 자세한건 주석..
[백준]1932번 정수 삼각형 - Java
문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 전에 비슷한 문제를 풀어봤던 것 같다! 암튼 그래서 쉽게 풀었음 ㅎㅎ 동적계획법 문제가 나오면 평소처럼 생각하지 말고 거꾸로 생각하거나 밑에서부터 계산해보거나 처음 결과를 가지고 다음 계산에 이용한다거나 등의 접근 방식이 필요하다 이 문제에서는 위에서 아래 층으로 내려온다고 나와있지만 밑에서 부터 올라가는 식으로 계산을 하면 어떨까... 하는 생각으로 풀었다! 자세한건 주석으로! 코드 // 1932번 정수 삼각형 // https://www.acmicpc.ne..