코딩테스트/문제풀이 46

[프로그래머스] 공원산책

산책을 갈수있는지에 대한 조건을 '다음칸이 X가 아니라면' 으로 했어야했는데 '다음칸이 O라면' 으로 해서 문제가 발생했다. 왜냐면 시작한 부분을 S로 표시했는데 시작한 부분을 다시 지나갈수도 있으니,, 생각이 갇혀있으면 코테는 어려워지는것 같다.. 그래도 스스로 테스트케이스 추가해가면서 해결함지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다. 주어진..

[프로그래머스] 달리기 경주

시간복잡도.. 간만에 하니 이런게 기억이 잘 안난다. 요점은 1초당 1억번을 넘지말자. 무분별하게 배열에 for문을 갈기면 시간이 오바될수밖에 없다. HashMap을 잘 활용하자.얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 calling..

[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석

데이터추출 로직을 너무 기본 Java기능만 사용해서 한것같다. Stream으로 Filter나 forEach를 걸어서 해보면 좋을듯그리고 코테에서 사용하는 이차원배열 정렬을,, 다 까먹었다. 객체정렬하는 Comparable도 있었던것같은데 기록을 한번 뒤져보면 좋을듯. 실무에서는 쿼리상에서 정렬을 마쳐서 불러오니까.. 잘 안쓰게 되는 기능인것같다. ->배열을 Stream을 통해서 사용하고 다시 toArray를 하면 좋아보인다. Stream은 필수인듯.AI 엔지니어인 현식이는 데이터를 분석하는 작업을 진행하고 있습니다. 데이터는 ["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]으로 구성되어 있으며 현식이는 이 데이터들 중 조건을 만족하는 데이터..

[프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸

이동하려고 하는칸이 범위를 벗어나지 않는지 확인하는 로직이 저거말고 좀 더 깔끔한게 있었던것같은데,, 찾아봐야겠다. 각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다. 보드의 각 칸에 칠해진 색깔 이름이 담긴 이차원 문자열 리스트 board와 고른 칸의 위치를 나타내는 두 정수 h, w가 주어질 때 board[h][w]와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수를 return 하도록 solution 함수를 완성해 주세요. 이웃한 칸들 중 몇 개의 칸이 같은 색으로 색칠되어 있는지 확인하는 과정은 다음과 같습니다. 1. 정수를 저장할 변수 n을 만들고 board의 길이를 저장합니다...

[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기

변수가 많으면 헷갈려~~~ 주석을 잘 달자.어떤 게임에는 붕대 감기라는 기술이 있습니다. 붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다. 기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다. 몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회..

[프로그래머스] 2024 KAKAO WINTER INTERNSHIP_가장 많이 받은 선물

Map을 안쓰고 했는데 Map을 써서도 할 수 있을것같다. 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. 두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다. 예를 들어 A가 B에게 선물을 5번 줬고, B가 A에게 선물을 3번 줬다면 다음 달엔 A가 B에게 선물을 하나 받습니다. 두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나 받습니다. 선물 지수는 이번 달까지 자신이 친구들..

[프로그래머스] [PCCE 기출문제] 10번 / 공원

쉬운 문제기는 한데 처음에 엉뚱한 생각을 했어서 기록....지민이는 다양한 크기의 정사각형 모양 돗자리를 가지고 공원에 소풍을 나왔습니다. 공원에는 이미 돗자리를 깔고 여가를 즐기는 사람들이 많아 지민이가 깔 수 있는 가장 큰 돗자리가 어떤 건지 확인하려 합니다. 예를 들어 지민이가 가지고 있는 돗자리의 한 변 길이가 5, 3, 2 세 종류이고, 사람들이 다음과 같이 앉아 있다면 지민이가 깔 수 있는 가장 큰 돗자리는 3x3 크기입니다.  지민이가 가진 돗자리들의 한 변의 길이들이 담긴 정수 리스트 mats, 현재 공원의 자리 배치도를 의미하는 2차원 문자열 리스트 park가 주어질 때 지민이가 깔 수 있는 가장 큰 돗자리의 한 변 길이를 return 하도록 solution 함수를 완성해 주세요. 아무런..

[Softeer] [21년 재직자 대회 예선] 전광판

간만에 문제풀이,,,쉬운문제였는데 전광판 숫자 Map에서 5를 잘못입력해서 뭐가 틀렸는지 계속 찾느라 오래걸렸다..하드코딩해야 하는 부분이 있다면 여러번 확인해서 확실히 할것.. 내 소스import java.io.*;import java.util.*;public class Main { public static void main(String[] args) { HashMap map = new HashMap(); //전광판 숫자에 따른 불 ON/OFF map.put('0', "1110111"); map.put('1', "0010010"); map.put('2', "1011101"); map.put('3', "1011011");..

[코드트리] 수열의 순서 바꾸기

어려움 문제는 확실히 난이도가 높다........ 화이팅.. 1이상 N이하의 숫자가 겹치지 않게 구성된, 원소의 개수가 N개인 수열이 하나 주어졌을 때, 맨 앞에 있는 숫자를 선택해 수열 중간에 집어넣는 행동을 최소 몇 번 반복해야 숫자들이 오름차순 정렬이 되는지를 계산하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에는 N이 주어집니다. 두 번째 줄에는 N개의 숫자가 공백을 사이에 두고 주어집니다. 1 ≤ N ≤ 100 출력 형식 첫 번째 줄에 수열을 오름차순으로 정렬하기 위해 맨 앞에 있는 원소를 뒤로 밀어 넣어야 하는 최소 횟수를 출력합니다. 입출력 예제 예제1 입력: 4 1 2 4 3 출력: 3 예제 설명 처음 숫자 1을 4와 3 사이로 옮기면 2 4 1 3이 됩니다. 그 다음 숫자 2를 1과..