반응형

분류 전체보기 316

[프로그래머스,Java] Levle2: 쿼드 압축 후 개수 세기

문제분석 문제 목표: 0과 1로 이루어진 배열이 주어집니다. 1.만약 모든배열이 0 또는 1로 전부 채워져있으면 압축합니다. 2.전부 채워져있지않으면, 배열을 4등분한뒤 1번을 반복합니다. 0과 1의 갯수를 구해주세요. 그림을보면 계속 4등분하는 로직을 '반복'하는걸 주목하셔야합니다. 무슨 알고리즘을 써야하는지 감이 오셧겟지만, 재귀함수를 사용해야합니다. 코드를 보면서 문제에대한 접근을 설명하겟습니다. 우선 메인함수와 전역변수입니다. 전역변수의 zero 와 one은 각각 0의 갯수와 1의 갯수입니다. rec();를 호출하고 zero와 one의 갯수를 세줍니다. 그래서 rec()를 보시자면 문제를 읽어보시면 1.먼저 1또는 0으로 배열이 모두 채워졋는데 확인한다. 2.만약 모두채워지지않았다면 4등분한뒤 다..

[프로그래머스,Java] Level2: 후보키

문제분석 문제목표: 데이터를 탐색해서 후보키의 갯수를구하자. 특징: 후보키를 구하기위해서 유일성과 최소성이 만족되어야한다. 데이터베이스의 기초지식이 갖추어져있다면 익숙하겠지만, 모르면 좀 난감하게 와닿을수있다. 유일성: 유일하게 식별이 가능한상태 , 즉 이 튜플로 모든데이터를 구별이 가능해야한다. 더 쉽게말하면 중복이 단 하나도없는 컬럼이여만한다. 최소성: 예시로 설명하자면, A={1,2} B={1,2,3} 이면 최소성이 깨진다. 그 이유는, A가 이미 {1,2}로 유일하게 식별이가능한데, B={1,2,@}는 볼필요도없이 유일하게 식별이가능하다. B와같은 쓸데없는 후보키를 제거하는것이 최소성이라고한다. 즉, 어떤 컬럼의조합이 다른 컬럼에 포함되면 안된다. 문제를 읽어보면 우리가 필요한게 컬럼들의 모든 조..

[프로그래머스,Java] Level2:양궁대회

https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 문제가 길어 링크로 대체합니다. 문제분석: 목표: 라이언과 어피치의 과녁점수가 최대일때 맞춘 과녁의 점수판을 반환해주세요. 특수조건: 1. 라이언과 어피치가 동점일경우, 어피치의 승리입니다. 2. 어피치가 승리할경우 -1을 반환 3. 만약, 과녁점수가 동일한기록이 여러개 존재할경우, 낮은 점수를 많이 맞힌것을 정답으로합니다. 이 문제가 정말 어렵다고 느끼게하는건 바로..

[프로그래머스,자바] Level2: 카카오프렌즈 컬러링북

문제분석: 요구사항: 1. 영역은 몇개인가? 2. 영역중에서 가장 많은넓이를 차지하는값은 무엇인가? 보는바와 같이, 완전탐색을 행해야한다. 모든 영역을 탐색한뒤에 영역을 나누고, 영역의 넓이를 더해야한다. 완전탐색을 쓰기전에 DFS, BFS 둘중 하나를 골라야한다. 필자는 여기서 DFS를골랐다. DFS는 재귀 , 스택을 사용하니 비교적 깔끔한 코드가 나온다. 먼저 DFS를 쓰기위한 재료? 들을 준비해야한다. 뒤에서 쓸 재귀함수의 파라미터를 깔끔하게 하기위해서 필요한 재료들은 미리 전역변수로 올려놨다. v 와 h는 너비와 높이제한을 위해서, visited는 이미 체크가 완료된 블록을 중복체크를 방지하기위해서 target은 같은영역만을 체크하기위한 기준을 잡기위해 board는 picture과 동일한기능이지만..

[프로그래머스,자바] Level2: 2개 이하로 다른 비트

문제의 이해 이 문제는 어느한 숫자 x를 2진법으로 치환한뒤, 그 2진법의 비트 1~2개가 다르며 보다 큰 수를 찾는 문제입니다. 비트가 1~2개 다르며 큰 수를 찾는방법을 찾는건 처음 생각하기에 매우 까다롭습니다. 따라서 차근차근 하나씩 경우의수를 찾아가며 규칙을 찾는게 중요합니다. 1.뒷자리가 00일경우 : 뒷자리가 00일경우, 바로 다음숫자가 조건에맞는 숫자입니다. EX) 100 ->101 비트가 1개다르며 큰 수 2.뒷자리가 01일경우 : 뒷자리가 01일경우, 바로 다음숫자가 조건에 맞는 숫자입니다. EX) 101->110 비트가 2개 다르며 큰 수 3.뒷자리가 10일경우 : 뒷자리가 10일경우 , 바로 다음숫자가 조건에 맞는 숫자입니다. EX) 110->111 비트가 1개 다르며 큰 수 4.뒷자..

[프로그래머스,자바] Level2: 프렌즈4블록

https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제가길어서 링크로 대체합니다. 문제분석 구현을 해야할것은 딱 3가지입니다. 1. 제거할 4블록을 확인하는 로직 2. 제거할 4블록을 삭제하는 로직 3.제거한 공간을 아래로 내리는 로직 이 3가지로직을 While 반복문에 넣으면 우리가 원하는 기능이 만들어집니다. 1. 제거할 4블록을 확인하는건 i행 j열 블록을 남은 3블록과 같은지를 체..

[프로그래머스,자바] Level2: 주차 요금 계산

문제분석 Level2 답지않게 여러 기술을 많이알아야 풀수있는문제다. (역시 카카오문제) 문제목표: 차량기록을 모두처리한뒤에, 이용한 차량마다 주차요금 구하기 (차량번호 적은순) 제일먼저, 요금표에있는 기본시간 (std_time) , 기본요금 (std_pay) , 단위 시간(per_time), 시간당 요금(per_pay) 로 알기쉽게 분리해놨다. 그리고 우리가 문제를 풀기위해서 2개의 Map을 준비했다. 첫번째, 이용시간을 구하기위한 Key= 차량너버, value=입장시간인 맵 하나와 두번째, 각 차량넘버의 이용비를 저장하는 Key=넘버 ,value=이용비 맵 하나를 준비했다. 그리고, 차랑넘버순으로 정렬을 해줘야하니 TreeMap으로 설정해뒀다. 주차기록을 처리하는 로직이다. 기록의 문자열을 정리하여 ..

[프로그래머스,자바] Level2: K진수에서 소수 개수 구하기

문제풀이 문제보고 한 5분동안 멍 때린 문제다.... 처음 생각했을때, 문제 설명처럼 0P0 , 0P, P0, P인 경우를 모두 고려해서 뽑아야 하나 생각햇는데, 방법도 잘 떠오르지도 않으며 그냥 귀찮았다... 뭔가... 좀 쉽게 풀수는 없나 꼼수를 부리다가 이런 생각 해봤다. 그냥 이거 "0" 들어간걸 기준으로 분해시켜버리면 되는거아닌가?? 생각해보니 4개의 기준 모두 0을 기준으로 분리가되어있고, 0을 기준으로 분해를해도 문제될게 전혀 없다는걸 발견했다. 문제를 풀기위한 첫번째 스텝으로 N진법 로직이다. 알고리즘 문제를 많이풀어봤으면 N진법 변환 로직은 간단하다. While문을 사용하여, N을 K로 나눈 나머지를 계속 앞에다가 붙여가면된다. 두번째 스텝으로, 이 N진법으로 푼 문자열을 "0" 을 기준..

[프로그래머스,자바] Level1: 신고 결과 받기

문제분석 문제목표: 신고 건수를 처리하여, 신고한사람에게 몇건의 처리 결과 메일을 보내야하는지 구하시오. 제일 첫번째로 해야할 일은, K번 신고당한 사람이 누구인지를 알아야합니다. 그래야지, 신고한 사람에게 처리결과 메일을 보낼수 있게되니깐요. K번 신고당한 사람이 누구인지 만 찾으면 안됩니다. 그 이유는, 저희 목표가 신고당한 사람을 신고한 사람을 찾아 메일을 보내는게 목표입니다. 따라서, 신고당한 사람마다 하나의 신고한사람의 리스트를 가져야할 필요가있습니다. ->사람: 신고한 리스트 = 1: 1 즉, Map을 사용할 필요가있습니다. Key : User Value: 유저를 신고한 사람들 두번째로 해야할 일은, 신고를 처리해야합니다. 신고리스트 report[]를 돌리면서, 신고자와, 신고당한자를 문자열정..

HTTP 메소드

HTTP 메소드 에는 5가지가 있다. • GET: 리소스 조회 • POST: 요청 데이터 처리, 주로 등록에 사용 • PUT: 리소스를 대체, 해당 리소스가 없으면 생성 • PATCH: 리소스 부분 변경 • DELETE: 리소스 삭제 Get • 리소스 조회 • 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음 POST • 요청 데이터 처리 • 메시지 바디를 통해 서버로 요청 데이터 전달 • 서버는 요청 데이터를 처리 • 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다. • 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용 PUT • 리소스를 대..

네트워크+HTTP 2022.01.16
반응형