모의고사 늘 모의고사 지겹지만 그게 답이니까 모의고사...
오늘은 슬랙으로 날라오는 코딩테스트(알고리즘)을 풀고 나머지로 자바와 CSS를 할것이다
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
-10,000 ≤ numbers의 원소 ≤ 10,000
1 ≤ numbers의 길이 ≤ 1,000
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
for(int i = 0; i < numbers.length; i++){
answer[i] = numbers[i] * 2;
}
return answer;
}
}
문제 설명
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ num_list의 길이 ≤ 1,000
0 ≤ num_list의 원소 ≤ 1,000
public class Solution {
public int[] solution(int[] num_list) {
// 입력 배열의 길이를 구함
int length = num_list.length;
// 결과를 저장할 배열을 생성 (입력 배열과 동일한 길이)
int[] reversedArray = new int[length];
// 배열을 거꾸로 뒤집어서 결과 배열에 저장
for (int i = 0; i < length; i++) {
reversedArray[i] = num_list[length - 1 - i];
}
// 결과 배열을 반환
return reversedArray;
}
}
이렇게 두문제를 풀어보았다.
확실히 실전에서 언어를 써보는것이 몹시 중요함을 느낀다.
익숙해지는것이 목표!
<script>
.b-button {
background-color: white;
border-color: rgb(212, 6, 64);
border-style: solid;
border-width: 1px;
color: rgb(6,95,212);
border-radius: 2px;
cursor: pointer;
padding-top: 9px;
padding-bottom: 9px;
padding-left: 16px;
padding-right: 16px;
transition: background-color 3s, color 0.15s;
}
.b-button:hover {
background-color: rgb(6,95,212);
color: white;
}
.b-button:active {
opacity: 0.7;
}
</script>
<script>
.c-button {
background-color: rgb(25,69, 98);
color: white;
border: none;
height: 36px;
width: 74px;
border-radius: 8px;
font-weight: bold;
font-size: 15px;
cursor: pointer;
margin-left: 8px;
transition: all 1s ease-out;
}
.c-button:hover {
box-shadow: 5px 5px 10px rgba(0,0,0, 0.5);
}
</script>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="styles.css">
</head>
<style>
.a-text {
font-family: 'Noto Sans KR', sans-serif;
font-size: 40px;
font-weight: 600;
font-style: italic;
text-align: center;
line-height: 36px;
text-decoration: underline;
text-decoration: none;
}
.b-span-text {
text-decoration: underline;
}
</style>
<body>
<p class="a-text">
텍스트1
</p>
<p class="b-text">
텍스트<span class="b-span-text">span</span>텍스트
</p>
</body>
</html>
Scale : 함수!!!!!!!!!!!!!
뭔가 처음 개념부터 잡고 가는 느낌이라.....허허 좋구먼
신기한것도 많고 내가 저번에 했던 강의는 진짜 따라하기용으로 기본을 조금은 빠르게 넘어가는 강의 같았다면
이번은 정말 하나하나 세세하게 하는 느낌이다.
얄코님의 강의를 어제에 이어서 복습할것이다!!!!
short
와 동일 // 문자 리터럴과 숫자, 유니코드로 표현 가능
char ch10 = 'A';
char ch11 = 65;
char ch12 = '\u0041';
문자별 유니코드 정보: 🔗 List of Unicode characters - Wikipedia
기억할것은 문자별로 아스키코드등의 정수 변환이 가능하고 작은 따옴표''를 사용해야한다!!!
그것이 char
이다!!!
// 같은 문자열인지 여부 반환
boolean bool1 = 'A' == 'A';
boolean bool2 = 'A' == '가';
// 숫자와 비교할 시 해당 정수값 기준으로
boolean bool3 = 'A' == 65;
boolean bool4 = 'A' > 64.0;
boolean bool5 = 'A' > 66f;
// 사전순 상 먼저 오는 쪽이 작음
boolean bool6 = 'A' < 'B';
boolean bool7 = '가' > '나';
위와 같은식으로 정수대 글자로 비교가 가능하다!!!!!!!!!
boolean
자료형워메 중요한걸
true
, false
가 표시됨a && b | AND | a와 b가 모두 true일때만 true 반환 |
---|---|---|
a || b | OR | a와 b 중 하나만 true면 true 반환 |
&&
: 앞의 것이 false
면 뒤의 것을 평가할 필요 없음||
: 앞의 것이 true
면 뒤의 것을 평가할 필요 없음?
b :
ctrue
일 때 반환될 값false
일 때 반환할 값String
: 문자열 자료형==
: 같은 종이인가?equals
: 같은 글이 적혀있는가?String
: 문자열 자료형☕ Ex01.java
// 리터럴 방식
String str1 = "Hello World!";
String str2 = "안녕하세요 😆 반갑습니다~ 🖐️🖐️🖐️";
// 빈 문자열 가능
String str3 = "";
// 인스턴스 생성 방식
String str4 = new String("나중에 자세히 배웁니다.");
☕ Ex02.java
String hl1 = "Hello";
String hl2 = "Hello";
String wld = "World";
// 리터럴끼리는 == 을 사용하여 비교 가능
boolean bool1 = hl1 == hl2;
boolean bool2 = hl1 == wld;
String hl3 = new String("Hello");
String hl4 = new String("Hello");
String hl5 = hl4;
// 💡 인스턴스와 비교하려면 .equals 메소드를 사용해야 함
// 특별한 경우가 아니면 문자열은 .equals로 비교할 것
boolean bool3 = hl3 == hl4;
boolean bool4 = hl1.equals(hl2);
boolean bool5 = hl1.equals(hl3);
boolean bool6 = hl3.equals(hl4);
boolean bool7 = wld.equals(hl2);
// 같은 곳을 참조하는 인스턴스들
boolean bool8 = hl4 == hl5;
==
: 같은 종이인가?equals
: 같은 글이 적혀있는가?이스케이프 표현 | 대체 |
---|---|
\" | 큰따옴표 |
\’ | 작은따옴표 |
\n | 줄바꿈 |
\t | 탭 |
\ | 백슬래시 하나 |
int int1 = "".length();
int int2 = "헬로".length();
int int3 = "Hello".length();
int int4 = "김수한무 거북이와 두루미".length();
String str1 = "";
String str2 = " \t\n";
int int1 = str1.length();
int int2 = str2.length();
// 💡isEmpty : 문자열의 길이가 0인지 여부
boolean bool1 = str1.isEmpty();
boolean bool2 = str2.isEmpty();
// 💡isBlank : 공백(white space)을 제외한 문자열의 길이가 0인지 여부
boolean bool3 = str1.isBlank();
boolean bool4 = str2.isBlank();
String str3 = "\t 에 네 르 기 파!! \n";
// 💡 trim : 앞뒤의 공백(white space) 제거
String str4 = str3.trim();
// 변수 그 자체에 적용하기
// - 문자열은 불변 : 변수가 가리키는 종이를 바꾸는 것
str3 = str3.trim();
String str1 = "아야 슬슬 오함마 준비해야 쓰것다";
// 💡 charAt : ~번째 문자 반환
char ch1 = str1.charAt(0);
char ch2 = str1.charAt(4);
// ⭐️ 마지막 문자 얻기
char ch3 = str1.charAt(str1.length() - 1);
String str2 = "얄리 얄리 얄라셩 얄라리 얄라";
// 💡 indexOf/lastIndexOf : 일치하는 첫/마지막 문자열의 위치
// 앞에서부터 카운트해서 int로 반환
// 두 번째 인자 : ~번째 이후/이전부터 셈
int int1 = str2.indexOf('얄');
int int2 = str2.indexOf('얄', 4);
int int3 = str2.indexOf("얄라");
int int4 = str2.lastIndexOf("얄라");
int int5 = str2.lastIndexOf("얄라", 12);
// 💡 포함되지 않은 문자는 -1 반환
int int6 = str2.indexOf('욜');
// 💡 equals : 대소문자 구분하여 비교
String str_a1 = "Hello World";
String str_a2 = new String("Hello World");
String str_a3 = "HELLO WORLD";
boolean bool_a0 = str_a1 == str_a2; // ⚠️ 문자열은 이렇게 비교하지 말 것!
boolean bool_a1 = str_a1.equals(str_a2);
boolean bool_a2 = str_a1.equals(str_a3);
// 💡 equalsIgnoreCase : 대소문자 구분하지 않고 비교
boolean bool_a3 = str_a1.equalsIgnoreCase(str_a3);
boolean bool_a4 = str_a2.equalsIgnoreCase(str_a3);
String str_b1 = "옛날에 호랑이가 한 마리 살았어요.";
// 💡 contains : 포함 여부
boolean bool_b1 = str_b1.contains("호랑이");
boolean bool_b2 = str_b1.contains("나무꾼");
// 💡 startsWith : (주어진 위치에서) 해당 문자열로 시작 여부
boolean bool_b3 = str_b1.startsWith("옛날에");
boolean bool_b4 = str_b1.startsWith("호랑이");
boolean bool_b5 = str_b1.startsWith("호랑이", 4);
// 💡 startsWith : 해당 문자열로 끝남 여부
boolean bool_b6 = str_b1.endsWith("살았어요.");
boolean bool_b7 = str_b1.endsWith("호랑이");
String emailRegex = "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$";
String str_c1 = "yalco@yalco.kr";
String str_c2 = "yalco.yalco.kr";
String str_c3 = "yalco@yalco@kr";
boolean bool_c1 = str_c1.matches(emailRegex);
boolean bool_c2 = str_c2.matches(emailRegex);
boolean bool_c3 = str_c3.matches(emailRegex);
String str_a1 = "ABC";
String str_a2 = "ABCDE";
String str_a3 = "ABCDEFG";
// 💡 compareTo : 사전순 비교에 따라 양수 또는 음수 반환
// 같은 문자열이면 0 반환
int int_a1 = str_a1.compareTo(str_a1);
// 시작하는 부분이 같을 때는 글자 길이의 차이 반환
int int_a2 = str_a1.compareTo(str_a2);
int int_a3 = str_a1.compareTo(str_a3);
int int_a4 = str_a2.compareTo(str_a3);
int int_a5 = str_a3.compareTo(str_a1);
String str_a4 = "HIJKLMN";
// 시작하는 부분이 다를 때는 첫 글자의 정수값 차이 반환
int int_a6 = str_a1.compareTo(str_a4);
int int_a7 = str_a4.compareTo(str_a3);
String str_b1 = "abc";
String str_b2 = "DEF";
int int_b1 = str_b1.compareTo(str_b2);
// 💡 compareToIgnoreCase : 대소문자 구분 없이 비교
int int_b2 = str_b1.compareToIgnoreCase(str_b2);
String str_a1 = "Hello, World!";
// 💡 toUpperCase / toLowerCase : 모두 대문자/소문자로 변환
String str_a2 = str_a1.toUpperCase();
String str_a3 = str_a1.toLowerCase();
String str_b1 = "Hi! How are you? I'm fine. Thank you!";
String str_b2 = "how";
boolean bool_b1 = str_b1.contains(str_b2);
// ⭐️ 영문 텍스트에서 대소문자 무관 특정 텍스트 포함 여부 확인시
boolean bool_b2 = str_b1
.toUpperCase()
.contains(str_b2.toUpperCase());
boolean bool_b3 = str_b1
.toLowerCase()
.contains(str_b2.toLowerCase());
☕ Ex07.java
// 💡 concat : 문자열을 뒤로 이어붙임
String str_a1 = "슉-";
String str_a2 = "슈슉-";
String str_a3 = "슈슈슉-";
String str_a4 = str_a1 + str_a2 + str_a3;
String str_a5 = str_a1.concat(str_a2);
// ⭐️ 메서드 체이닝
String str_a6 = str_a1
.concat(str_a2)
.concat(str_a3)
.concat(str_a4)
.concat(str_a5);
// ⭐️ + 연산자와의 차이
String str_b1 = "ABC";
// 1. concat에는 문자열만 이어붙일 수 있음
String str_b2 = str_b1 + true + 1 + 2.34 + '가';
String str_b3 = str_b1
// .concat(true)
// .concat(1)
// .concat(2.34)
// .concat('가')
;
// 2. concat은 필요시에만 새 인스턴스 생성 (큰 의미 없음)
String str_b4 = str_b1 + "";
String str_b5 = str_b1.concat("");
int str_b1Hash = System.identityHashCode(str_b1);
int str_b4Hash = System.identityHashCode(str_b4);
int str_b5Hash = System.identityHashCode(str_b5);
// 3. null이 포함될 경우
String str_c1 = null;
// + 연산자는 null과 이어붙이기 가능
String str_c3 = str_c1 + null + "ABC";
// ⚠️ concat은 NullPointerException 발생
//String str_c4 = str_c1.concat("ABC");
//String str_c5 = "ABC".concat(str_c1);
// 4. ⭐️ 다중 연산시 생성되는 문자열 인스턴스의 수가 다름
String str_d1 = "a" + "b" + "c" + "d";
// + 연산은 내부적으로 아래와 같이 최적화됨 (이후 배움)
String str_d2 = new StringBuilder("a")
.append("b")
.append("c")
.append("d")
.toString(); // "abcd"가 생성됨
// "a", "b", "c", "d", "abcd"가 생성되어 메모리 차지
// concat은 매 번 문자열을 반환하므로
String str_d3 = "a"
.concat("b") // "ab"가 생성됨
.concat("c") // "abc"가 생성됨
.concat("d"); // "abcd"가 생성됨
// "a", "b", "c", "d", "ab", "abc", "abcd"가 생성되어 메모리 차지
+
연산 : 다중 연산시 메모리 절약for
루프 등) 에는 무의미StringBuilder... append
사용StringBuilder
, StringBuffer
등 사용concat
사용 String str_a1 = "덜컹";
// 💡 repeat : 문자열을 주어진 정수만큼 반복
String str_a2 = str_a1.repeat(2);
String str_a3 = str_a1
.concat(" ")
.repeat(3)
.trim();
String str_b1 = "대한민국 다 job 구하라 그래";
// 💡 substring : ~번째 문자부터 (~번째 문자까지) 잘라서 반환
String str_b2 = str_b1.substring(7);
String str_b3 = str_b1.substring(7, 10);
String str_b4 = str_b1.substring(11, 14);
String piece1 = "다 ";
String piece2 = "구하라";
String str_b5 = str_b1.substring(
str_b1.indexOf(piece1),
str_b1.indexOf(piece2) + piece2.length()
);
// 💡 replace : 주어진 앞의 문자(열)을 뒤의 문자(열)로 치환
String str_c1 = "점심에 보쌈집에 가서 수육을 먹었다.";
String str_c2 = str_c1.replace("보쌈", "중국");
// 여럿 포함시 모두 치환
String str_c3 = "밥 좀 먹자, 응? 야, 밥 좀 먹자고 밥 밥 밥";
String str_c4 = str_c3.replace('밥', '빵');
// ⭐️ 원본은 바뀌지 않는 점 확인
// 메서드 체이닝
String str_d1 = "하여튼 호의가 반복되면 권리인 줄 알아";
String str_d2 = str_d1
.replace("하여튼", "아무튼")
.replace("호의", "호이".repeat(2))
.replace("권리", "아기공룡 둘리");
String str_e1 = "02=123.4567_8900";
// 💡 replaceAll / replaceFirst : ⭐️ 정규표현식 사용 가능
// 전부 치환 / 첫 번째 일치부분만 치환
String str_e2 = str_e1
.replaceAll("[=._]", "-")
.replaceFirst("[-@#]", ")");
String str1 = "가나다라마";
String str2 = "010-1234-5678";
String str3 = "하나 둘 셋 넷 다섯";
// 💡 toCharArray : 문자열을 분할하여 문자열의 배열로 반환
char[] chAry1 = str1.toCharArray();
char[] chAry2 = str3
.replace(" ", "")
.toCharArray();
// 💡 split : 주어진 기준으로 (~개까지) 분할하여 문자열 배열로 반환
String[] strAry1 = str1.split("");
String[] strAry2 = str2.split("-");
String[] strAry3 = str3.split(" ");
String[] strAry4 = str3.split(" ", 3);
복습은 위대하다 복습을 하는과정중에서 기억이 안나 가물가물하던것들이 머리에 쇽쇽 박혀나가니 훨씬더 유익한 시간이라고 느껴진다.