모의고사 풀기!
오늘도 제공해주는 알고리즘 문제를 풀것이다.
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_string의 길이 ≤ 1,000
class Solution {
public String solution(String my_string) {
return new StringBuilder(my_string).reverse().toString();
}
}
문제 설명
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
제한사항
0 < rsp의 길이 ≤ 100
rsp와 길이가 같은 문자열을 return 합니다.
rsp는 숫자 0, 2, 5로 이루어져 있습니다.
class Solution {
public String solution(String rsp) {
StringBuilder answer = new StringBuilder();
for (char c : rsp.toCharArray()) {
switch (c) {
case '2':
answer.append('0');
break;
case '0':
answer.append('5');
break;
case '5':
answer.append('2');
break;
}
}
return answer.toString();
}
}
1.결과를 저장하기 위한 StringBuilder 객체 생성
2.현재 문자가 '2'(가위)일 경우 '0'(바위)를 결과에 추가
3.위와 같은 방법으로 '0', '5' 도 해줌
4.switch문을 종료
5.StringBuilder 객체를 문자열로 변환 후 반환
순서로 해주면 된다
public class Main {
public static void main(String[] args) {
// 테스트 케이스
String rsp = "2052"; //입력 예
// Solution 객체 생성
Solution sol = new Solution();
// solution 메서드 호출
String result = sol.solution(rsp);
// 결과 출력
System.out.println("Input: " + rsp);
System.out.println("Output: " + result);
}
}
이렇게 두문제를 모두 풀어 보았다.
기본적인 CSS 를 위해 background-clip의 개념까지 알아볼것이다.
<style>
div {
width: 100px;
height: 100px;
background-color: red;
position: relative;
animation: animationName 5s linear 2s infinite alternate;
}
@keyframes animationName {
0% {
background-color: lightblue;
left: 0px;
top: 0px;
}
25% {
background-color: lightcoral;
left: 150px;
top: 0px;
}
50% {
background-color: lightcyan; left: 150px; top: 150px;
}
75% {
background-color: lightgray; left: 0px; top: 150px;
}
100% {
background-color: lightgreen; left: 0px; top: 0px;
}
}
</style>
<head>
<title>Document</title>
<style>
#example1 {
border: 10px dotted black;
padding: 15px;
background-color: lightcoral;
background-clip: border-box;
}
#example2 {
border: 10px dotted black;
padding: 15px;
background-color: lightcoral;
background-clip: padding-box;
}
#example3 {
border: 10px dotted black;
padding: 15px;
background-color: lightcoral;
background-clip: content-box;
}
</style>
</head>
<body>
<p>background-clip: border-box (this is default):</p>
<div id="example1">
<p>The background extends behind the border.</p>
</div>
<p>background-clip: padding-box:</p>
<div id="example2">
<p>The background extends to the inside edge of the border.</p>
</div>
<p>background-clip: content-box:</p>
<div id="example3">
<p>The background extends to the edge of the content box.</p>
</div>
</body>
CSS 의 기본과정까지는 마쳤는데 아 감이 안온다 큰일이다
자바꼴 나는건 아닌가 모르겠다.
실습만이 살길임을 느끼며 이해가 아닌 쀨륑이 필요하다
내 느낌을 찾아야지 가능할거같다!!!!
복습을 최에에에대한 많이!
%b | 불리언 |
---|---|
%d | 10진수 정수 |
%f | 실수 |
%c | 문자 |
%s | 문자열 |
%n | (포맷 문자열 내 바꿈) |
// ⭐️ 시스템의 printf 메소드 : String.format과 같은 형식으로 출력
// 줄바꿈을 하지 않으므로 직접 넣어줘야 함
System.out.printf("%s의 둘레는 반지름 X %d X %f입니다.%n", circle, two, PI);
printf
를 사용하니 유의할것
%n
은 OS별로 일정하게 줄바꿈이 되도록 적절한 개행문자를 넣어줌\n
// 💡 정수 다양하게 포매팅하기
String[] intFormats = {
"%d", // 1. 기본
"%13d", // 2. n 자리수 확보, 오른쪽 정렬
"%013d", // 3. 빈 자리수 0으로 채움
"%+13d", // 4. 양수는 앞에 + 붙임
"%,13d", // 5. 쉼표 사용
"%-13d", // 6. 자리수 확보, 왼쪽 정렬
"%+,013d" // 7.
};
// 💡 실수 다양하게 포매팅하기
String[] fltFormats = {
"%f", // 1. 기본 (소수점 6자리, 0으로 메움)
"%.2f", // 2. 소수점 n자리까지
"%13.2f", // 3. 정수자리 확보, 소수자리 제한
"%,f", // 4.정수부분이 길면
"%+013.2f", // 5.
"%-13.2f", // 6
};
null
문자열
String emptyStr = "";
String nullStr = null;
// ⭐️ 빈 문자열과 null은 다름
boolean bool1 = emptyStr == nullStr;
// ⚠️ null은 문자열 인스턴스 메소드 사용 불가
// 아래의 코드들은 모두 런타임 에러를 발생시킴
// int int1 = nullStr.length();
//boolean bool2 = nullStr.equals(emptyStr);
//String str1 = nullStr.concat("ABC");
빈 문자열 (길이가 0) : 힙 공간에 자리를 차지
null
문자열 : 힙에 할당되지 않음, 가리키는 곳이 없음
특정 타입의 데이터를 묶음으로 다루기 위해 사용
지정된 자료형과 개수만큼 메모리 공간을 나란히 확보
각각이 담는 자료형의 크기만큼 요소당 메모리 차지
💡 문자열의 경우: 각 문자열이 저장된 주소값을 담음
// 이중 배열
boolean[][] dblBoolAry = new boolean[3][3];
int[][] dblIntAry = new int[][] {
// ⭐️ 요소 배열의 크기가 다를 수 있음
{1, 2, 3},
{4, 5},
{6, 7, 8, 9},
};
// 삼중 배열
char[][][] trpChrAry = {
{{'자', '축'}, {'인', '묘'}},
{{'진', '사'}, {'오', '미'}},
{{'신', '유'}, {'술', '해'}},
};
var
연산자로 변수 선언 - 타입을 명시하지 않음주어진 boolean
값에 따라 명령문 실행 여부를 결정
boolean open = true;
int saleFrom = 10, saleTo = 20;
int today = 15;
// 💡 if : 괄호 안의 boolean 값이 true면 다음 명령 실행
if (open) System.out.println("영업중");
if (!open) System.out.println("영업종료");
// 💡 실행할 명령이 한 줄 이상일 경우 블록 사용
if (today >= saleFrom && today <= saleTo) {
System.out.println("세일중입니다.");
System.out.println("전품목 20% 할인");
}
// 💡 else : if문 안의 boolean 값이 false일 경우 실행
if (open) {
System.out.println("영업중");
} else {
System.out.println("영업종료");
}
else if 를 이용해주는 것도 좋지만
전반적으로 가독성을 늘리기위해서 하나의 if문과 return을 이용해서 가독성을 높혀주는것도
좋은 방법!!!!!!!!!!
💡 switch : 괄호 안에 기준이 될 변수를 받음
가능한 자료형: byte, short, int, char, String, enum(이후 배움)
if 문으로 사용하면 몹시 복잡하고 까다롭고 보기도 힘든것들을 표기하기에 좋음
i
를 많이 사용 - 문맥에 따라 index를 뜻함 // 종료조건이 없는 for 루프
for (;;) {
System.out.println("영원히");
}
System.out.println("닿지 않아"); // ⚠️ 실행되지 않음
// 종료조건을 만족시키지 못하는 무한루프
for (int i = 0; i < 10; i++) {
System.out.println("그래도");
i--;
}
System.out.println("닿지 않아"); // ⚠️ 실행되지 않음
System.out.println("\n- - - - -\n");
int sumOfArray = 0;
for (int num : multiOf4) {
sumOfArray += num;
}
for
문, 전부 사용할 때는 foreach
문후....for 문이 이해되지 않았다....
정확히 말하면 예시에서 나오는것이 이해되지않았다.
// 4의 배수 차례로 10개 배열에 담기
int count = 10;
int[] multiOf4 = new int[count];
for (int i = 1, c = 0; c < count; i++) {
if (i % 4 == 0) {
multiOf4[c++] = i;
}
}
이것이였는데 왜 i 와 c 를 둘다 써야할지를 몰랐다 그래서 하나만 쓰는방식으로 바꿔보기로했다
int count = 10;
int[] multiOf4 = new int[count];
//카운트 갯수 즉 배열의 갯수는 같을 것이니까!
int num = 4 //그저 첫 수만 지정해주면 되는것을.....
for (int i = 0; i < count; i++){
multiOf4[i] = num;//4가 처음에 들어가고 0번쨰니까 [4]의 시작이된다
num += 4 //거기에 그저 4를 더해주고 1번째 인덱스값이니 [8]!!!!
//4의 배수 배열 완성....
for (int i = 0; i < 100; i++) {
// 💡 continue : 한 루프만 건너뜀
if (i % 3 == 0) continue;
// 💡 break : 블록 전체를 종료
if (i == 10) break;
System.out.println(i);
}
for문을 했는데도 아직 난 이해가 가질않는다
닥치고 외워야하는걸까? 그냥 for문이란 이런것이다 라고 해야하는걸까
툭 치면 나오는 그런상태여야만 이해가갈까 모르겠다.
그래도 복습을 하니 도움이 되기는 한다.