[오늘 공부한 부분]

 

1. 항해99 입학시험 - 자바스크립트 특정 문자열 제거 함수 사용하기


1. 항해99 입학시험

 

  오늘은 항해99 10기 입학시험이 있던 날이다. 오늘 주어진 과제는 화성땅공동구매 화면에 가격란을 추가하고 평수에 따라 가격을 500원씩 계산한 값을 화면단에 보여주는 것이었다. 일단 가격에 대한 변수를 price라고 만들어 주었고, 그 값을 평수 * 500으로 구현하면 되는 것인데, 평수의 변수 값에 "평"이라는 문자때문에 연산에 에러가 났다. 그래서 특정 문자열 제거하는 함수를 구글링하여 문제를 해결했다. 

 

 

1. 처음 구현했던 방법은 substring()를 사용한 방법이었다. 평수가 "10평, 20평, 30평, 40평, 50평" 이렇게 정해져 있었기 때문에 앞에서부터 두번째 인덱스까지만 추출해서 곱하기 연산을 하는 방법을 사용했다. 표면적으로 과제 구현에 성공은 했지만, 훗날 만약에 3자릿수 평수 예를 들면 100평과 같은 평수를 주고 싶을때는 제대로 구현되지 않을 코드라는 점에서 개선이 필요했다.

 

2. 그래서 최종적으로 사용한 함수는 replace() 함수였다. 이 함수는 특정 문자열을 제거해 주기 때문에 "평"이라는 문자를 제거하고 숫자값만 추출하여 평수의 자릿수와 관계없이 가격을 추출할 수 있는 코드가 되었다.

 

2. 특정 문자열 제거하는 함수

 

 substr() : 함수는 특정 위치에서 시작하여 길이만큼 문자열을 반환한다. 

str.substr(start, length) // start위치에서 length만큼의 문자열을 추출

var str = 'abcdef';

console.log(str.substr(1)); //bcdef
console.log(str.substr(1,4)); //bcde
console.log(str.substr(-5,2)); //bc

 

 substring() : 특정 위치에서 시작하여 특정 인덱스 전 까지 문자열을 반환한다.

str.substring(indexStart, indexEnd) //indexStart는 추출하고자 하는 문자열의 시작 인덱스, indexEnd는 설정된 값 이전 인덱스까지

var str = 'abcdef';

console.log(str.substring(1)); //bcdef
console.log(str.substring(1, 4)); //bcd
console.log(str.substring(4, 1)); //bcd
console.log(str.substring(-1)); //abcdef

 

 slice() : 함수는 인덱스 범위로 문자열을 자른다는 개념은 substring() 함수와 동일하지만 미묘한 차이가 존재한다.

str.substring(indexStart, indexEnd) // indexStart는 추출하고자 하는 문자열의 시작 인덱스, indexEnd는 설정된 값의 이전 인덱스까지 문자열을 추출

var str = 'abcdef';

console.log(str.slice(1)); // bcdef
console.log(str.slice(1, 4)); // bcd
console.log(str.slice(-1)); // f
console.log(str.slice(-4, -1)); cde

※ substring() 함수와 slice() 함수의 차이점

  • substring() 함수와 slice() 함수는 매개변수의 값이 음수일 경우 동작되는 방식이 다르다.
  • substring() 함수는 첫 번째 매개변수가 두 번째 매개변수보다 클 경우 값을 교환하여 동작
  • slice() 함수는 첫 번째 매개변수가 두 번째 매개변수보다 클 경우 빈 값을 반환
  • substring() 함수는 첫 번째 매개변수가 음수일 경우 0으로 처리
  • slice() 함수는 첫 번째 매개변수가 음수일 경우 문자열의 길이 + 첫 번째 매개변수의 결괏값으로 설정

 

 replace() : 특정 문자열을 빈 값('')으로 대체, 정규식을 만족하거나 특정 문자열이 존재할 경우 원하는 문자열로 대체할 수 있다.

var str = 'abcdef';

console.log(str.replace('a', '')); //bcdef
console.log(str.replace('f', '')); //abcde

 

출처 :https://developer-talk.tistory.com/178

 

 

 

 

'Coding > Javascript' 카테고리의 다른 글

javascript 기초 문법  (0) 2022.11.01

[오늘 공부할 부분]

 

- 어제 헷갈렸던 연습문제 복습

1. 연산자와 연산식

2. 연산자의 종류


- 어제 문제 복습

 

첫번쨰 -> 첫번째, 덧셉결과 -> 덧셈결과 오타가 있네요 !

※ 헷갈렸던 부분 :

scanner.nextLine()은 문자열을 읽어오고 그걸 다시 Integer.parseInt()로 받으면 int화 될 것 같은데 왜 첫번째 수에 A를 넣고 두번째 수에 B를 넣으면 오류가 나는 것일까? 내가 가정했던 부분은 A가 65 이고 B가 66이기 때문에 그 합이 결과값으로 나올 거라 예상했다. 

 

팀원들과 토론 후 내린 결론 (확실하지 않음...) → 

① String 타입은 char 타입으로 강제 캐스팅할 수 없다. - char 타입 이었다면 int 타입으로 변환되서 가능했을지도.

② int 타입엔 문자인 'A'나 'B' 자체가 들어갈 수 없다.

③ 참고 ( char 타입 산술 연산 할 때 int 타입 결과 값이 아니라 char 타입으로 받는 방법 )

 

 

 

1. 연산자와 연산식

① 기초 개념

  • 연산자(operator) : 연산에 사용되는 표시나 기호 ex) +, -, *, /, %
  • 피연산자(operand) : 연산되는 데이터 ex) 3 + x 연산식의 피연산자는 3과 x
  • 연산식(expression) : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
  • 연산 우선순위 : 괄호()로 감싼 연산이 최우선순위를 갖는다.
  • 연산식은 반드시 하나의 값을 산출한다.
  • 산술 연산자의 경우 숫자타입(byte, short, int, long, float, double)으로 결과 값이 나오고, 비교연산자와 논리 연산자는 논리타입(boolean)으로 결과 값이 나온다.

② 연산자의 종류

출처 : https://docs.oracle.com/javase/tutorial/
출처 : https://medium.com/@katekim720/ , 신용권 <혼자 공부하는 자바>

③ 연산의 방향과 우선순위

  • 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순우를 갖는다.
  • 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.
  • 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정한다.

 

2. 연산자의 종류

 

 단항 연산자 : 부호 연산자 (+,_), 증감 연산자(++,--), 논리 부정 연산자(!)

  •  부호 연산자: 양수 및 음수를 표시하는 +, -를 말한다. boolean, char 타입을 제외한 나머지 기본 타입에  사용할 수 있다.

※ 주의할 점은 부호 연산자의 결과가 int 타입이라는 것 ! 따라서 byte 타입 변수를 부호 연산하면 int 타입으로 변환된다.

 

  • 증감 연산자(*헷갈리는 파트): 변수의 값을 1증가 시키거나 1 감소 시키는 연산자. ( ※ 참고로 ++i  i = i + 1 의 연산 속도는 같다.)

출처 :&nbsp;https://unknownyun.blogspot.com/2018/08/blog-post_38.html

  • 논리 부정 연산자 (!) : 피연산자가 true이면 false 값을 산출, 피연산자가 false이면 true 값을 산출

 

 

 

② 이항 연산자 : 산술 연산자 (+, -, *, /, %), 문자열 결합 연산자(+), 비교 연산자(<,<=,>,>=,==,!=), 논리 연산자(&&,||,^,!), 대입 연산자(=,+=,-=,*=,/=,%=)

 

  • 산술 연산자와 문자열 결합 연산자는 어제 내용과 겹치기 때문에 오늘은 넘어가도록 한다.

 

  • 비교 연산자에서 주의할 부분은 float 타입이다. 실수의 저장 방식인 부동 소수점 방식때문에 아래와 같이 0.1 과 0.1f의 값이 다르다. 0.1f는 0.1의 근삿값(0.10000000149011612)으로 표현된다. 따라서 0.1보다 큰 값이 되어버린다. 
  •  이것의 해결책은 다음과 같이 피연사자를 모두 float 타입으로 변환하거나 정수타입으로 변환해서 비교하는 방법이 있다.
  • String 변수 비교: 기본 타입 변수 값을 비교할 때는 == 연산자를 사용하지만, 참조 타입인 String 변수를 비교할 때에는 equals() 메소드를 사용한다.

 

 

  • 논리 연산자

출처 : https://medium.com/@katekim720/ , 신용권 <혼자 공부하는 자바>

  • &보다 &&가 더 효율적 : &&는 앞의 피연산자가 false라면 뒤의 피연산자를 평가하지 않고 바로 false 라는 산출결과를 내지만 &는 두 피연산자를 모두 평가해서 산출 결과를 내기 때문 ! (| 와 ||도 마찬가지)
  • 논리 연산은 흐름 제어문인 조건문(if), 반복문 (for, while) 등에서 주로 이용

 

  • 대립 연산자는 오른쪽 피연산자 갑을 왼쪽 피연산자인 변수에 저장한다.
  • 대립 연산자는 모든 연산자들 중에서 가장  낮은 연산 순위를 가지고 있기 때문에 제일 마지막에 수행 된다.

 

 

③ 삼항 연산자

 

  • (조건식) ? A : B 를 말하며 조건이 true면 A를 산출하고, false이면 B를 산출 한다.
  • if 문을 쓰면 길어질 코드를 한 줄에 간단하게 작성 가능하기 때문에 효율적이다.

 

[ 오늘 공부할 부분 ]

 

1. 자바 기본 이해
2. 자바 개발 도구 설치
3. 변수의 타입
4. 변수 타입 변환
5. 변수와 시스템 입출력


1.  Java 시작하기 전에

 

① Java 소개

  • 객체 지향 프로그래밍 언어 - 객체를 만들고 이 객체들을 연결해서 프로그램을 완성하는 방식
  • 메모리 자동 정리  ∴ 개발자가 코드 작성에 집중할 수 있다.
  • 오픈소스 라이브러리 풍부
  • 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여 운영체제와 독립적으로 동작할 수 있다. 
  • 따라서 자바는 모든 운영체제에서 실행 가능하다.

② Java 컴파일 과정

출처 : https://tutorial.eyehunts.com/java/how-java-program-run-java-work-compiler/

[기본 개념 정리]

  • 프로그래밍 언어 : 컴퓨터가 이해할 수 있는 기계어 (machine language)와 사람의 언어를 연결하는 다리 역할  ex) Java
  • 소스파일 (source file) : 프로그래밍 언어로 작성한 파일 ex) .java 파일
  • 컴파일 (compile) : Java Compiler에 의해 .java 파일을 .class 라는 Java bytecode로 만드는 과정
  • JVM (Java Virtual Machine) : 자바를 실행하기 위한 가상 기계

[ 컴파일 과정 ]

  • 개발자가 프로그래밍 언어로 소스파일 작성.
  • 자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일
  • 컴파일된 바이트코드를 JVM의 클래스로더(Class Loader)에게 전달
  • 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올린다.
  • 실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행한다

 

2. 자바 설치 및 IDE (IntelliJ IDEA) 설치

 

① 자바 설치

https://www.azul.com/downloads/?package=jdk 

 

Downloads

No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.

www.azul.com

  • Azul 사이트에서 [무료버전 - Java 11(LTS) - mac OS - ARM 64-bit - JDK - .dmg]  순으로 다운로드 진행
  • 터미널 창을 열고 java -version 을 입력했을 때, 버전이 제대로 나온다면 설치 완료!

터미널창 모습

 

② IntelliJ IDEA 설치 (Ultimate version)

https://www.jetbrains.com/ko-kr/idea/download/#section=mac

 

다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE

 

www.jetbrains.com

  • IDE 란 ? IDE(Integrated Development Environment, 통합 개발 환경). 소스를 작성하는 것부터 서버를 실행, 터미널 사용, 각종 라이브러리 관리 등 다양한 기능이 통합되어 있는 툴

 

3. Java 변수 타입

 

① 변수 기초 지식

  • 변수 : 값을 저장할 수 있는 메모리 번지에 붙인 이름. 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다.
  • 변수 선언 : 변수의 타입과 이름을 정하는 것. 자바 언어의 변수 선언의 규칙은 아래와 같다. (출처 : www.oracle.com)
Except for variables, all instance, class, and class constants are in mixed case with a lowercase first letter. Internal words start with capital letters.
Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed.
Variable names should be short yet meaningful. The choice of a variable name should be mnemonic- 
that is, designed to indicate to the casual observer the intent of its use.
One-character variable names should be avoided except for temporary "throwaway" variables.
Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters.
  • 변수 사용 범위 : 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하고 밖에서는 사용할 수 없다. 

변수 사용 범위 에러 예시

  • 변수 초기화: 변수에 최초로 값이 저장될 때 변수가 생성되는 것. 초기화되지 않은 변수는 컴파일 에러를 발생시킨다.

변수 초기화 에러 예시

 

 

 

② Java 변수 타입

 

출처 :&nbsp;https://vertex-academy.com/tutorials/en/types-variables-java-create-variable/

 

  • 정수 타입: 정수를 저장할 수 있는 타입. byte, short, int, long 타입
  • char 타입: 작은따옴표(')로 감싼 하나의 무자 리터럴을 저장할 수 있는 타입
  • String 타입: 큰따옴표(")로 감싼 문자열을 저장할 수 있는 타입
  • 실수 타입: 실수를 저장할 수 있는 타입. float, double
  • boolean 타입: 참과 거짓을 의미하는 true와 false를 저장할 수 있는 타입

 

4. 변수 타입 변환

 

 자동 타입 변환: 자동으로 타입이 변화되는 것. 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장 될 때 발생

 

 

  • 정수 타입 연산에서  int 타입 보다 작은 byte타입의 변수는 int타입으로 자동 타입 변환되어 연산 수행
  • char/short 타입도 마찬가지로 int 타입으로 지동 타입 변환 된다.
  • 반면, long타입의 경우 int타입 보다 허용범위가 크기 때문에 변수결과를 long 타입으로 변수에 저장 한다.

 

 강제 타입 변환(casting) : 강제로 타입을 변환하는 것. 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장하는 것

 

강제 타입 변환 예시
실수 연산에서의 강제 타입 변환 예시

③ 문자열 결합 연산: 문자열과 + 연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어남

 

 

  • 문자열 연산은 앞에서 부터 순차적으로 + 연산 수행
  • 피연산자 중 하나가 문자열일 경우 나머지 피연산자도 문자열로 자동 변환된다.
  • 만약 우선 연산하고 싶은 부분이 있다면 해당 부분을 괄호()로 감싸주고 연산을 수행

 

④ Integer.parseInt(): 문자열을 정수 int 타입으로 변환

⑤ Double.parseDouble(): 문자열을 실수 double 타입으로 변환 

※문자열 타입 변환 연습 문제

Q) var1 부터 var4 까지 + 연산을 수행해서 int 타입 result 변수에 9 가 저장되도록 ()에 들어갈 코드를 작성하시오.

long var 1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = ( 이곳의 답안을 작성하기! );
System.out.println(result);

더보기

답안 : (int)(var1 + var2 + var 3+ (int)(Double.parseDouble(var4)));

 

5. 변수와 시스템 입출력

 

① System.out.println(): 괄호에 주어진 매개값을 모니터로 출력하고 개행

② System.out.print( "형식문자열", 값1, 값2, ... ): 괄호에 주어진 매개값을 모니터로 출력하고 개행하지 않음

③ System.out.printf() : 괄호에 주어진 형식대로 출력

출처 : wikifidia

* printf() 참고할 만한 자료 : https://www.baeldung.com/java-printstream-printf

 

Formatting Output with printf() in Java | Baeldung

Learn how to format output using Java's PrintStream.printf() method

www.baeldung.com

 

④ System.in.read(): 키보드에서 입력된 int 타입의 키코드를 읽음

⑤ Scanner: 키보드에 입력된 String 타입의 문자열을 읽음

 

 

'Coding > Java' 카테고리의 다른 글

[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[02] 생활코딩 Java 입문 강의 정리 (2)  (0) 2022.11.04
[01] 생활코딩 Java 입문 강의 정리 (1)  (0) 2022.11.04

[오늘의 회고]

 

1. 어려웠던 부분 : sourcetree 사용 과정에서 발생한 오류를 해결하는 시간이 너무 소요됐다. Mac14 pro는 m2 칩을 사용해서 그런지 파이참이나 인텔리제이, 소스트리 등 다양한 프로그램을 사용하는데 있어서 예기치못한 오류들이 자주 발생하는 것 같다. 어쩌겠는가 ! 그때 그때 해결해야지 뭐 ! 

 

2. 느낀점 : git은 직접 많이 사용을 해봐야 익숙해 질 것 같다. 앞으로 친해져야 하는 친구니까 지금 어렵더라도 꾸준히 사용해보자.

 

3. 새로 알게된 내용 : 특정 문자열 제거함수에 대해 알게 되었다. 그리고 구글링이라면 해결 못할 문제나 에러가 없다는 것 ! 구글 입사하고싶다 ^_^

 

4. 마지막 한 줄 (셀프칭찬) : 입학시험 난이도가 어렵진 않았지만, 배운 지식으로 키워드를 잡고 구글링을통해 필요한 함수를 찾아서 구현할 수 있었다. 아직 속도는 더디지만 알게 모르게 성장하고 있는 것 같다. 꾸준함을 무기로 삼아 열심히 해야겠다는 다짐을 한 하루 ! 

 

5. 내일 할 일 : chap04 , TIL정리, git 2주차 강의, 블로그 재정리 (til 형식과 기술/개념 파트 나눠서 정리하기)

 


[오늘 공부한 부분]

1. 항해99 입학시험 - 자바스크립트 특정 문자열 제거 함수 사용하기

2. git 기본 개념

3. git 두 가지 error 해결

  • error1 - 'Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.'
  • error2 - Refreshing Remote Repositories Failed

 

 

https://leejincha.tistory.com/76

 

[01] Javascript 특정 문자열 제거 함수

[오늘 공부한 부분] 1. 항해99 입학시험 - 자바스크립트 특정 문자열 제거 함수 사용하기 1. 항해99 입학시험 오늘은 항해99 10기 입학시험이 있던 날이다. 오늘 주어진 과제는 화성땅공동구매 화면

leejincha.tistory.com

https://leejincha.tistory.com/77

 

Git error 'Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.'

[오늘 공부한 부분] 1. git 기본 개념 2. git 두 가지 error 해결 error1 - 'Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.' error2 - Refreshing Remote Repositories Failed 1. git 기본 키워드 정리 ① 버전 관

leejincha.tistory.com

 

 

 

항해 99 입학시험이 코앞으로 다가왔다. 바로 내일 ! 10시부터 17시 !!! 

매니저님들이 시험이 쉽다고 걱정하지 말라고 하시면서 예제 링크를 하나 보여주셨다. 

네? 쉽다고요 ....? 전 왜 어렵죠 ....? ㅎ

 

구현되어있는 페이지 소스코드에서 힌트를 얻어 어찌저찌 구현을 하긴 했다.

페이지 html 소스코드 덕분에 구현한거라 내일 새로운 문제를 풀고 구현을 해야 한다면 과연 할 수 있을지 모르겠다.

뭐... 7시간인데 구글링하면 어떻게든 하겠지 !!!


 

 

 

[ 구현해야 하는 부분 ]

 

1. 취소버튼 만들기

2. 취소 누르면 다시 완료버튼이 되도록 하기

 

어쨌든 성공 ! :)

 

1.  BE 부분

 

 

 

2.  FE 부분

 

+ Recent posts