문제설명 생각하기 HashMap과 HashSet을 이용하여 문제를 풀기 내 풀이 2022년 카카오 블라인드 코딩테스트 1번 문제입니다. 게시판 이용자들 중에 신고가 누적 된 사람은 게시판 이용을 못하게 되고, 신고한 사람에게 신고결과메일을 보내주게 됩니다. 신고한 사람이 받는 메일의 개수를 구하는 문제입니다. 문제를 읽고 해시맵이 떠오르지 않는다면 풀
문제 설명 생각하기 실제로 맞은 개수와 0의 개수를 따로 구한다. 두개를 더한값이 최고순위 실제로 맞은값이 최저순위가 된다. 내 풀이 함수형 코딩으로 문제를 풀어보았습니다. 아무래도 main함수 안에 코드를 전부 넣는것보다 가독성이 좋은 것 같네요.
문제설명 생각하기 단계별로 요구하는 사항대로 구현하면 되는 구현 문제이다. 내 풀이 문제를 푸는데 한시간 반정도 걸렸습니다. LV1의 어렵지 않은 빡구현 문제지만 단계를 지키지 않고 구현을 한 내 탓이라고 생각이 듭니다.. 여러분은 1단계부터 차근차근 구현하세요 ㅠㅠ
문제설명 생각하기 replace를 사용하여 문자를 바꿔주기 내 풀이 s.replace("바꿀 문자","바뀌는 문자").s.replace("바꿀 문자","바뀌는 문자")형식으로 뒤에 .을 붙여서 연결하면 사용이 됩니다.
문제설명 생각하기 1,4,7일때 왼손 3,6,9 일때 오른손 그리고 2,5,8,0일때 가까운손 구하기 왼손과 오른손을 저장할 변수, 왼손과 오른손의거리를 저장할 변수를 사용하기 *,0 ,# 을 각각 10, 11, 12로 생각하고 풀기 내 풀이 문제를 푸는데 오랜시간이 걸렸다. 그래도 끝까지 직접 풀었다는 뿌듯함이 있었다. 먼저, leftha
문제설명 생각하기 board에 있는 2차원배열의 순서를 생각하기 moves의 움직임에 따라 board의 값을 변경해주기 if문으로 예외조건들 처리해주기 내 풀이 문제를 풀기
문제설명 생각하기 signs에 값이 true면 +1 ,false면 -1를 absolutes에 곱하여 출력 내 풀이 signs[i]값이 false면 absolutes[i]*-1을 해줌으로써 값을 음으로 만들어준 뒤 ans와 더한다.
문제 설명 생각하기 각 다른 3개의 숫자를 더하기 반복문으로 진행 함수형 프로그래밍 연습하기 내 풀이 3개의 숫자를 i,j,k로 만들어준다. num에 i+j+k값을 넣고 sosu(num)함수를 부른다. sosu함수에서 check값을 true로 주고 num이 소수인지 판별하는 반복문을 돌린다. 만약 num % i가 0이면 소수가 아니기 때문에 false를 주고 반복문종료 후 리턴한다. if문에 걸리지 않는다면 check에 true를 담아 리턴한다. 돌아가서 chk에 값이 담기고 그 값이 true 즉, 소수라면 ans++로 개수를세어준다. sosu함수 안에 num/2+1는 약수 중 제일 작은 값이 자신의 절반값이기 때문이다.
문제설명 생각하기 commands의 길이만큼 반복하며 i,j까지 돌며 원소를 뽑기 뽑은 원소를 정렬시키기 그 중 k번째 수 찾기 내 풀이 ArrayList를 사용하여 list에 i번째부터 k까지의 수를 담고 정렬시킨다. 그 중 k번째 수를 ans[]에 담는다. 리스트를 초기화시키고 반복
문제설명 생각하기 1.수포자들의 찍는방식을 반복시키기. 반복문으로 수포자의 정답개수를 저장 저장된 정답개수를 비교하여 많이맞춘 수포자번호를 출력 내 풀이 cnt는 수포자들마다 정답을 찍는 패턴이 다르기때문에 각 패턴의 숫자를 cnt에 담았다. max에 1번수포자,(2번,3번 )을 비교하여 정답을 많이맞춘 수포자를 담았고 ans[i]의 값과 같다면 리스트에 수포자 번호를 추가하고 리스트를 int배열로 바꾸어 주면 정답.
문제설명 생각하기 폰켓몬의 종류를 정렬 정렬한 배열을 탐색하며 종류를 더해감 길이가 넘어가면 리턴 내 풀이 nums의 포켓몬 종류를 저장할 i와 종류의 개수를 저장할 cnt를 변수로 할당하고 정렬된 nums를 차례대로 돌며 포켓몬의 종류가 이전에 안나왔던것이라면 cnt++ 만약 cnt가 N/2와 같아진다면 멈추고 cnt를 출력
문제설명 생각하기 left부터 right까지 약수의 개수를 구해가며 반복 개수가 짝수면 더하고 홀수면 빼자 내 풀이 개수를 세는 변수 cnt를 주어 반복문안에서 약수가 있을 때마다 더해주었다. cnt의 개수가 짝수면 더하고 홀수면 빼준다. 이후 cnt =0 으로 초기화 개선된 코드 제곱수인경우 약수의 개수는 홀수, 제곱수가 아닌 경우 약수의 개수는 짝수 이문제를 접하면서 처음 알게된 사실이다. 기억하고 있으면 다른 문제 풀 때 도움이 될 것같다.
문제설명 생각하기 사실 첫번째로 문제를 보고 Math.pow를 사용하여 코드가 간결하지 못했다. 물론 문제를 풀지도 못했고 한시간 정도를 고민하고 고민하다 다른 사람의 코드를 보았다. 풀이 문제를 보고 너무 복잡하게 생각을 해서인지 3진법으로 바꾸는 기본을 까먹고 있었다. 3진법은 수를 3으로나눈 나머지를 문자열 앞에 붙이게 되면 완성된다.. 이후 Integer.parseInt(String s, int i)를 활용해 진법전환을 하면 정답이다.
문제설명 생각하기 예산으로 가능한 많은 부서를 지원하려면 금액이 가장 작은 부서순서대로 지원해주기. 내 풀이 int[]을 Arrays.sort로 정렬시킨다. 반복문을 돌면서 예산이 지원금액과 같거나 크다면 예산 = 예산-지원금액 후 ans를 증가시킨다.
문제설명 생각하기 numbers인덱스 배열에서 이중 포문을 돌리며 0, 1~N -> 1, 2~N 이런식으로 끝까지 반복하며 수를더한다. ArrayList를 사용하여 list에 중복이 아닌 수를 추가해준다. 정렬 ArrayList를 int[]로 변환 내 풀이 먼저 ArrayList인 list를 만들고 이중포문으로 numbers의 0번째를 기준으로 1~numbers.length까지 더해준다. 이때 조건으로 !(list.contains(numbers[i]+numbers[j]))로 리스트에 값이 없다면 add로 추가해준다. Collectons.sort(list) 오름차순 정렬 ans[]의 크기를 할당해주고 ArrayList를 int[]로 변환 후 리턴해준다.
문제설명 생각하기 2016년은 윤년이다. 윤년 2월은 29일까지 있다. 내 풀이 days 변수에 날짜 b를 받는다. if문으로 만약 원하는 날이 1월이 아니면 반복문을 실행. 1월이라면 패스한다. 반복문 안에서 윤년의 2월은 29일까지 있으므로 +29 4월 6월 9월 11월은 +30 나머지는 +31을 해준다. 2016년 1월1일이 금요일이므로 days % 7==1이면 금요일이다. 패턴을 파악해 나머지 0부터 6까지 작성해준다.
문제설명 생각하기 조건에 따라 n나누기 x가 1인 수를 구한다. 2.리턴 내 풀이 기본적인 연산구현이기에 설명은 생략.
문제설명 생각하기 가로와 세로길이중 큰것과 작은것을 구분해서 저장 구한 가로길이와 세로길이가 이전의 길이와 비교했을 때 큰지아닌지 구분. 곱셈 내 풀이 먼저 가로와 세로를 할당하고 비교할 max와 min값을 할당한다. 반복문으로 들어가 sizes2차원배열에서 size[]를 뽑아 큰값과 작은값을 구분하고 나와서 조건문으로 이전의 값과 비교한다. 최종적으로 가장 가로의 가장 큰값 세로의 가장큰값이 남게되며 곱하여 리턴해준다.