CodingBat 두번째 기초문제!
1. stringTimes
주어진 한문자열과 0이상의 정수형 n을 입력받아, 입력받은 문자열을 n만큼 반복해서 출력해라.
public String stringTimes(String str, int n) {
String s = "";
for(int i = 0; i < n; i++){
s += str;
}
return s;
}
2. frontTimes
주어진 문자열과 0이상의 정수형n을 입력받아, 주어진 문자열의 처음 3개 문자들을 n번 반복해 출력해라.
만약 주어진 문자열이 3보다 작다면, 그냥 그 문자열을 3번 반복해 출력해라.
public String frontTimes(String str, int n) {
String s = "";
if(str.length() > 2){
for(int i = 0; i < n; i++){
s += str.substring(0,3);
}
}
if(str.length() <= 2){
for(int i = 0; i < n; i++){
s += str;
}
}
return s;
}
3. countXX
입력받은 문자열에 나타나는 "xx"의 문자열 수를 출력해라. ex) "xxx"는 2 개의 "xx"가 나타남
int countXX(String str) {
int count = 0;
for(int i = 0; i < str.length()-1; i++){
if(str.substring(i,i+2).equals("xx")){
count ++;
}
}
return count;
}
4. doubleX
주어진 문자열에서 'x'문자 다음 바로 'x'문자가 나온다면 true를 반환해라.
Pattern.matches방법과 일반코드 방법
boolean doubleX(String str) {
// return java.util.regex.Pattern.matches("[^x]*?xx.*?",str);
}
boolean doubleX(String str) {
for(int i = 0; i < str.length()-1; i++){
if((str.charAt(i) == 'x'))
if((str.charAt(i+1) == 'x')){
return true;
}else{
return false;
}
}
return false;
}
5. stringBits
주어진 문자열을 인덱스 0부터 2간격으로 출력해라.
public String stringBits(String str) {
String s = "";
for(int i = 0; i < str.length(); i+=2){
s += str.charAt(i);
}
return s;
}
6. stringSplosion
주어진 문자열을 다음과 같이 출력해라.
주어진 문자열 : "Code" -> "CCoCodCode" ==인덱스 하나씩 증가하며 출력
public String stringSplosion(String str) {
String s = "";
for(int i = 0; i <= str.length(); i++){
s += str.substring(0,i);
}
return s;
}
7. last2
주어진 문자열에서 마지막 2번째 문자들과 같은 문자들을 마지막 2개의 문자들을 제외하고 세어서 출력해라.
public int last2(String str) {
int count = 0;
for(int i = 0; i < str.length()-2; i++){
if(str.substring(i,i+2).equals(str.substring(str.length()-2))){
count++;
}
}
return count;
}
8. arrayCount9
정수형 배열이 주어지면, 그 정수형 배열내 9의 개수를 세어 출력해라.
public int arrayCount9(int[] nums) {
int count = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 9){
count++;
}
}
return count;
}
9. arrayFront9
정수형 배열이 주어지면 앞 4개의 요소들중 9가 있으면 true를반환해라. 배열의 길이는 4보다 적지않을 것이다.
public boolean arrayFront9(int[] nums) {
if(nums.length > 4){
for(int i = 0; i < 4; i++){
if(nums[i] == 9){
return true;
}
}
}else{
for(int i = 0; i <nums.length; i++){
if(nums[i] == 9){
return true;
}
}
}
return false;
}
⬆ 내가 푼 방식
public boolean arrayFront9(int[] nums) {
int l = nums.length;
if(l > 4){
l = 4;
}
for(int i = 0; i < l; i++){
if(nums[i] == 9){
return true;
}
}
return false;
}
⬆솔루션 방식
10. array123
주어진 정수형 배열에서 1,2,3순서가 나타난다면 true를 반환해라
public boolean array123(int[] nums) {
for(int i = 0 ; i < nums.length-2; i++){
if(nums[i] == 1 && nums[i+1] == 2 && nums[i+2] ==3){
return true;
}
}
return false;
}
11. stringMatch
주어진 두개의 a,b 문자열에서 a와 b문자열이 같은 문자열이 나온다면 그 수를 세서 출력해라.
ex)a : "xxcaazz" "xxbaaz"를 비교하면 "xx", "aa", "az"가 같아 3이 출력됨.
public int stringMatch(String a, String b) {
int count = 0;
int al = a.length();
int bl = b.length();
if(al > bl){
int temp = al;
al = bl;
bl = temp;
}
for(int i = 0; i < al-1; i++){
if(a.substring(i,i+2).equals(b.substring(i,i+2))){
count++;
}
}
return count;
}
12. stringX
주어진 문자열에서 'x'가 나타난다면 문자열 맨앞과 맨뒤를 제외한 x를 전부 제거해 문자를 출력해라.
public String stringX(String str) {
String s = "";
if(str.length() > 1 && (str.charAt(0) == 'x') && (str.charAt(str.length()-1) == 'x')){
s += str.charAt(0);
for(int i = 1; i < str.length()-1; i++){
if(str.charAt(i) != 'x'){
s += str.charAt(i);
}
}
s += str.charAt(str.length()-1);
}else{
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) != 'x'){
s += str.charAt(i);
}
}
}
if(str.length() < 2){
s = str;
}
return s;
}
⬆내가푼것,, 너무 길고 복잡,,
public String stringX(String str) {
String s = "";
for(int i = 0; i < str.length(); i++){
if(!(i > 0 && i < (str.length() - 1) && str.substring(i,i+1).equals("x"))){
s += str.substring(i, i+1);
}
}
return s;
}
⬆ 솔루션 방법,,! 이렇게 간단한걸!
13. altPairs
주어진 문자열을 인덱스 0,1,4,5,8,9 ...규칙으로 출력해라.
규칙을 보면 0부터 4 차이로 출력하는것이 보인다. 0과 다음문자열1, 4와 다음문자열5, 8과 다음문자열 9...
public String altPairs(String str) {
String s = "";
int l = str.length();
for(int i = 0; i < l; i+=4){
if((l % 2 == 1) && (i == l-1)){
s += str.charAt(i);
}else{
s += str.substring(i,i+2);
}
}
return s;
}
14. stringYak
"yak"문자열은 unlucky한 문자이다. yak이 나오면 지워서 출력.
이건 나한테 좀 어려웠다,,,ㅜㅎ
public String stringYak(String str) {
String s = "";
for(int i = 0; i < str.length(); i++){
if(i+2 < str.length() && str.charAt(i) == 'y' && str.charAt(i+2) == 'k'){
i +=2;
}else{
s += str.charAt(i);
}
}
return s;
}
15. array667
주어진 정수형 배열에서 6뒤에 6이나 7이 나오는 수를 세서 출력해라.
public int array667(int[] nums) {
int count = 0;
for(int i = 0; i < nums.length-1; i++){
if(nums[i] == 6){
if((nums[i+1] == 6) || nums[i+1] == 7){
count++;
}
}
}
return count;
}
16. noTriples
주어진 정수형 배열에서 같은 수가 3번 반복되서 나오지 않는다면 true를 출력해라.
public boolean noTriples(int[] nums) {
for(int i = 0; i < nums.length-2; i++){
if((nums[i] == nums[i+1]) && (nums[i] == nums[i+2]) && (nums[i+1] == nums[i+2])){
return false;
}
}
return true;
}
17. has271
주어진 정수형 배열에서 첫번째 숫자, 첫번째 숫자 + 5, 첫번째숫자-1로 차례로 출력되는 배열이 있으면 true를 반환해라. 추가적으로 마지막 세번째 숫자는 (첫번째 숫자-1) ± 2내로 나와도 true로 반환해라.
public boolean has271(int[] nums) {
for(int i = 0; i < nums.length-2; i++){
int n = nums[i];
if((n+5 == nums[i+1]) && (Math.abs(nums[i+2]- (n-1)) <= 2)){
return true;
}
}
return false;
}
'Algorithm > CODINGBAT[Java]' 카테고리의 다른 글
CodinBat Array-1 (0) | 2021.10.04 |
---|---|
CodingBat Map-2 (0) | 2021.09.28 |
CodingBat Map-1 (0) | 2021.09.28 |
CodingBat String-1 (0) | 2021.09.27 |
CodingBat Warmup-1 (0) | 2021.09.27 |