나는 이 문제를 n번째의 단어를 문자 젤 앞에 붙여서 정렬한 다음, 젤 앞에 문자만 다시 제거해서 출력했다.
처음에 공백을 기준으로 나눴다가 쫌 해맸다 ;;;;;문자 하나하나를 기준으로 나눠서 " "을 만나면 인덱스(=cnt)를 초기화시키고홀짝구분해서 대소문자로 바꿔주면 끝.
두 배열의 요소를 비트연산을 때려서 answer\[]에 담는다.그리고 replace를 이용해 변환.길이가 짧으면 공백으로 채워준다비트연산AND 연산 : &OR 연산 : |진수 변환10진수 -> 2진수 StringInteger.toBinaryString(8); //100
s문자열 중에서 arri에 해당하는 문자가 있으면 Integer.toString(i)으로 변환.Integer.toString(); 정수형 -> 문자형s.replace(기존문자,바꿀문자);
문제하는 요구하는 순서대가 일치하면 햄버거가 된다. 햄버거 만드는 횟수를 구해라.이 문제는 그냥 보자마자 스택으로 풀 생각을 했다.스택에 4개 이상 쌓였을때 1,2,3,1 순서대로 된다면, 다 빼버리고 answer++;
board판에서 배치된 인형을 뽑아서 바구니에 담는다. 이때 바구니에 같은 인형이 배치되면 그 두개의 인형은 사라진다. 이 때 사라지는 인형의 수를 구해라이 문제는 그냥 구조 그림 자체가 stack을 쓰라고 알려준다.문제에서 board 인덱스 0을 1로 잡고있기 때문에
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.예를 들어, t="3141592"이고 p="
프로그래머스 정수 제곱근 판별 문제처음에 while문을 이용해 cnt를 n까지 늘려가면서 문제를 푸려고 했으나, 제곱근이 아닌수를 판별하는 코드에서 런타임에러가 떠서 Math함수 이용. 그래서 계속 그냥 제곱근 판별 로직 구현.Math.sqrt(); --> (타입 :
이 문제는 인덱스 0의 위치를 1로 간주한다. 이 부분만 조심하자.
1.최대공약수 -> 유클리드 호제법임의의 두 자연수 a, b(a > b)가 주어지고a를 b로 나눈 나머지를 r(r = a % b)로 이라고 하자.a=b가되고 b=r이 되는데 , 이때 b가 0이될떄의 a가 최대 공약수이다.2.최소공배수 -> a\*b/최대공약수
그냥 보자마자 HashMap이 생각이나서 그렇게 해결! 문제에서 정답 주의사항1.없는 선수가 정답!2.두명의 선수가 있으면 한명은 완주못함!그래서 그냥 map에 완주선수 value 더해주고, 참여명단선수 value에 빼준다음 map.ketSet()을 이용해서 0이아닌
이 문제는 두 문자열 X,Y를 비교해서 정답을 구하는 문제이다. 투포인터를 이용해서 두 배열을 비교해 StringBuilder에 담아서 값을 출력했다. 처음에 그냥 String에 담아서 값을 출력하니까 런타임에러가 떠서 당황했다. x,y는 상당히 큰 정수일 수 있으므로
끝을 봐야하기 때문에 while문으로 끝까지 간다!
주어진 배열 nums\[]에서 3가지 수를 선택하는 경우에서 그 수들의 합이 소수가 되는 횟수를 구하는 문제. 일단 경우의수 관련 문제는 DFS()로 푸는게 편하다. 겹치면 안되기에 DFS()를 재귀호출할때 스타트지점 s만 +1 시켜주면 겹치지 않게 경우의 수 구하는게
그냥 경우의 수 구하는 문제. 그냥 경우의 수 구하는 간단한 문제인데, 일반적인 for문을 이용해서 비교해가면서 구하기는 시간복잡도도 그닥이고 흔한 방식같아서 DFS로 구현해봤다.
일단 이 문제를 이해하는데 5분정도 걸렸다 ㅎ,,그리고 각각의 설문에 대한 선택의 점수가 어딘가에 저장을 하고 그 점수를 비교해서 성격유형을 판별 해야한다. 그렇기 때문에 HashMap을 이용해서 문제를 해결하는게 좋다.각각 설문에 대한 점수를 map에 저장하고 삼항연
char 문자는 26개의 문자로 이루저져있다. 그렇기 때문에 한 문자가 n 만큼 더 했을때 'z' 나 'Z' 를 넘어가면 안된다. 그래서 26이 넘어가면 26을 빼주고 n을 더해준다.이 점을 유의해서 문제를 풀면 된다.
먼저 배열을 역순으로 만들었다.index변수를 선언해서 m만큼 자르면서 최대이익 공식을 계산해서 answer에 저장. 이때 index변수의 위치가 배열의 길이보다 크거나(딱 갯수가맞는경우) , index+m이 배열의 길이보다 큰 경우(남은사과 부족)에는 break;
다트 게임 크기는 3번으로 고정된다. int\[] dart 크기 3으로 생성Character.isDigit()를 이용해서 문자가 숫자인지를 판별한다.임의의 문자 numStr에 숫자인 문자 ch를 String.valueOf()로 담는다.이제 보너스. 구간을 나눠준다. S
찍는 방식을 각각 num1~3에 담아준다.answers.length까지 for문을 돌려서 num1~3에 담은 배열의 값이 나오게 한다. 각 크기 만큼 나눈 나머지를 해주면 된다.최대값을 구해서 해당 최댓값인 인덱스+1을 answer에 넣는다.
for문의 i값이 해당 칼로리 음식. j가 갯수.홀수면 하나 빼주고 반만 str에 넣기.짝수면 그대로 반만 str에 넣기.반띵!
처음에 그냥 2중 for문으로 해봤는데 안풀렸다. 시간초과. 그래서 약수를 구하는 텀을 줄여야겠다 싶어서 절반만 약수를 구하고 +2를 해준다. 만약에 j\*j 가 같으면 +1만 해준다.
자바 String 클래스 1\. lastIndexOf(i) : 해당 문자열에서 i문자의 마지막 인덱스를 반환. null이면 -1 반환.2\. substring(0,i) : 만약에 i가 3이면 0~2번 인덱스 까지의 문자를 자른다.
문제 핵심1.무조건 발음 되는 문자여야 한다.2.같은 말을 반복하면 안된다.같은 말 반복은 if문으로 처리!그냥 ""로 바꾸면 남은 양쪽 문짜끼리 엉뚱하게 지워질수도있어서 " "로 바꿔주고 마지막에 ""로 바꿔주기.
일단 실패율을 실수형으로 만들고 그 level에 대한 실패율을 담을 map을 만들어서 담는다. 이 때 실패율을 구하는 cnt,num 둘다 없는 경우에는 실패율이 없으므로 1을 저장한다.map.ketSet()을 이용하여 순회하면서 map에 정렬되어있는 값들 중 최대값들을
1.Collections.sort(king) : 올림차순 정렬2.Collections.sort(king,Collections.reverseOrder()) : 내림차순 정렬
로또 번호와 당첨번호를 비교해서 값을 answer\[]에 담으면 되는간단한 문제이다.
투포인터 변수를 선언해서 문제해결.문자열비교는 '==' 가 아닌 'str1.equals(str2)' 로 해결해야한다. 이유는 '=='는 값자체의 참거짓을 따진다. 그래서 문자열 class의 값을 비교하려면 .equals()를 사용해야한다.
substring(index) : substring(4)라고 하면 3번째인덱스까지 문자를 자르고 4번째부터 나타내겠다는 뜻.substring(beginIndex,endIndex) : substring(4,13)이라고 하면 4번째 부터 12번째 인덱스 까지 나타내겠다는
배열의 연산은 시간이 오래걸린다는 것을 알았다. 최대한 for문 안쓰고 while문으로 해봤는데도 그냥 똑같다. 그래서 순서를 유지 해주는 HashMap에 정보를 저장해뒀다가 필요한 정보를 get해서 players\[]에 저장해주면 된다. 그러면 딱히 연산이 필요없다.
2중 for문으로 s.charAt()을 파헤쳐나가면 된다.만약에 해당 s.charAt()인 c가 알파벳 범위를 넘어가면 c-=26;을 해줘야 하는 부분이 핵심부분이다.그리고 만약에 건너뛰어야하는 리스트에 해당되는 c면 j--를 해줘서 for문이 한번 더 돌아가게 해주면